Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么Realm建议使用该列表<;T>;属性必须使用;“让我来吧?”;?_Swift_Realm - Fatal编程技术网

Swift 为什么Realm建议使用该列表<;T>;属性必须使用;“让我来吧?”;?

Swift 为什么Realm建议使用该列表<;T>;属性必须使用;“让我来吧?”;?,swift,realm,Swift,Realm,域的文档使用let声明其列表属性: class Person: Object { // ... other property declarations let dogs = List<Dog>() } 类人物:对象{ //…其他财产声明 让狗进来 } 当使用动态var声明其他域属性类型时,为什么使用let声明此列表属性?列表属性应使用let声明,因为域无法拦截对这些属性的分配。分配给列表属性不会导致您的更改持久化到域文件。通过使用let而不是var声明属性,您可以

域的文档使用
let
声明其
列表
属性:

class Person: Object {
    // ... other property declarations
    let dogs = List<Dog>()
}
类人物:对象{
//…其他财产声明
让狗进来
}
当使用
动态var
声明其他域属性类型时,为什么使用
let
声明此
列表
属性?

列表
属性应使用
let
声明,因为域无法拦截对这些属性的分配。分配给
列表
属性不会导致您的更改持久化到域文件。通过使用
let
而不是
var
声明属性,您可以让Swift编译器检测到不符合您意愿的代码

您不应该将属性赋值给
List
属性,而应该通过
List
所遵循的协议中的方法来改变属性的现有值

例如,要添加新狗,请执行以下操作:

person.dogs.append(lassie)
或更换现有狗只:

person.dogs.replaceSubrange(0..<person.dogs.count, with: [fido, spot])

person.dogs.replaceSubrange(0..相同的逻辑适用于
RealmOptional