swiftUI笔记2
可选值
在 Swift 中,可选类型(Optional)是一种特殊的类型,用于表示一个值可能存在,也可能不存在的情况。可选类型是 Swift 语言中对空值(nil)的一种处理方式。
当你声明一个可选类型的变量或常量时,它可以有两种可能的值:具体的值或者是空值(nil)。要声明一个可选类型,需要在类型后面加上问号 ?。
例如,下面是一个使用可选类型的示例:
当你需要使用可选类型的值时,需要进行解包(Unwrap)。解包是指将可选类型的值取出并转换为非可选类型。这可以通过使用感叹号 ! 运算符进行强制解包来实现。
If let是一种比较安全的取得可选值的方式。
在安卓开发中,Java 和 Kotlin 语言中也有类似的概念,称为 Nullable 类型。Nullable 类型允许变量或属性可以为空(null)。在 Java 中,可以使用 null 关键字表示空值;而在 Kotlin 中,可以使用 ? 符号来声明 Nullable 类型。
====================================================
#F5F5F7 苹果白
#1D1D1F苹果黑
====================================================
IOS中的观察者模式
·@EnvironmentObject:使用@EnvironmentObject,可以将一个对象设置为环境对象,并在需要访问该对象的任何视图中使用它。参数传入不再在构造参数列,而是用.environmentObject()
·@State:该注解使得某简单变量变为发布者,UI线程作为观察者一直监听该变量的变化,但只能用于同一个文件
·@Binding:创建一个可以在多个视图之间共享的双向绑定的属性。通常用于将父视图中@State的属性传递给子视图,并在子视图中对该@Binding属性进行更改。这样,当子视图更改属性的值时,父视图中的属性也会相应地更新。$是访问而不是修改,和@State在一起。
·ObservableObject:可观察的类,实现数据的双向绑定。它可以包含一个或多个被标记为@Published的属性。这些属性的值发生变化时,它们会自动发布通知,以便其他视图或对象可以观察到这些变化。
@ObservedObject&@Published :可以跨文件的观察者和发布者变量
====================================================
·sort(by
闭包接受两个参数`a`和`b`,并返回一个`Bool`值,表示`a`是否应该排在`b`之前。
====================================================
//随机
====================================================
extension是一种语言特性,用于扩展(或增强)现有的类型,包括结构体、类、枚举和协议。通过使用extension关键字,你可以在不修改原始类型的情况下,为它们添加新的功能、属性、方法或初始化器。
====================================================
\ .在Swift中被称为“关键路径”(key path),可以用于在另一个对象上指定VAR。
Int和String可以使用\.self,他们遵循Hashable协议
====================================================
Stack内部有贪婪,自己变贪婪
GeometryReader{proxy in
}包装后变成贪婪,为防止紧凑变贪婪,为视图添加.background( ),在它里面加GeometryReader{proxy in
Color.clear
}
贪婪转紧凑:在frame指定maxWidth,maxHeight为.infinity
紧凑转贪婪:在frame指定width和height即可
layoutPriority( ):视图空间分配优先级,括号里填数字
====================================================
var id = UUID( )
//UUID()方法来生成一个唯一标识符(UUID)并将其赋值给变量id。UUID是一个通用唯一标识符,它是一个128位的数字,通常用于标识计算机系统、文件、网络资源等。在Swift中,可以使用UUID()方法来生成一个新的UUID。
====================================================
一旦写了构造方法,就必须按参数列写入
====================================================
在SwiftUI中,some View 并不是一个协议,而是一种用来表示不透明视图类型的语法。在SwiftUI中,视图的类型很多时候是通过它的结构和组合来推断的,但有时候由于某些原因,编译器可能无法准确地确定视图的具体类型。这时候,就可以使用 some View 来表示一个不透明的视图类型,从而帮助编译器处理类型推断。
当你在SwiftUI代码中看到 some View 时,它通常用于返回一个视图,但不暴露其具体类型。这在一些情况下非常有用,比如在函数或闭包中返回不同类型的视图,但是不希望暴露这些具体的类型给调用者。