Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
Ios 将新对象添加到域中的现有列表_Ios_Swift_Realm_Realm List - Fatal编程技术网

Ios 将新对象添加到域中的现有列表

Ios 将新对象添加到域中的现有列表,ios,swift,realm,realm-list,Ios,Swift,Realm,Realm List,我有两节课。首先看起来是这样的: class Person: Object { dynamic var owner: String? var dogs: List<Dogs>() } class Dogs: Object { dynamic var name: String? dynamic var age: String? } 现在,在ViewController中的“viewDidLoad”中,我用空的列表创建对象Person,并将其保存在域中

我有两节课。首先看起来是这样的:

class Person: Object {
    dynamic var owner: String?
    var dogs: List<Dogs>()
}
class Dogs: Object {
    dynamic var name: String?
    dynamic var age: String?
}
现在,在
ViewController
中的“viewDidLoad”中,我用空的
列表创建对象
Person
,并将其保存在域中

func viewDidLoad(){
    let person = Person()
    person.name = "Tomas"
    try! realm.write {
        realm.add(Person.self)
    }
}
它工作得很好,我可以创建
Person
,当我尝试在
SecondViewController
中的
viewdiload
中读取此数据时,问题就开始了:

var persons: Results<Person>?

func viewDidLoad(){
    persons = try! realm.allObjects()
}
这里,我的应用程序因一条信息而崩溃:
只能在写事务中添加、删除或创建域中的对象-首先在RLMRealm实例上调用beginWriteTransaction。
如何将新的
Dog
添加到
列表
以及如何更新person[0]?
我使用SWIFT 3.0编写如下内容:

if let person = persons?[0] {
    person.dogs.append(newDog)
}

try! realm.write {
    realm.add(person, update: true)
}

请检查您如何获得
领域
。每次调用
defaultRealm
,您都会得到一个新的领域

Person
属性的类型为
Results
,它是一个包含由领域管理的
Person
对象的集合。为了修改托管对象的属性,例如将新元素附加到列表属性,您需要在写事务中

try! realm.write {
    persons[0].dogs.append(newDog)
}

旁注:除了在解决问题的write事务中添加代码外,您还可以按名称查询
Person
,如下所示

@IBAction func addDog(){
    let newDog = Dogs()
    newDog.name = "Rex"
    newDog.age = "2"

    let personName = realm.objects(Person.self).filter("name = 'Tomas'").first!

    try! realm.write {
        personName.dogs.append(newDog)
    }
}

为领域数据库添加对象

class Task : Object {
    @objc dynamic var id : Int = 0
    @objc dynamic var name = ""
    @objc dynamic var phone = ""
    @objc dynamic var address = ""
}
@IBAction func buttonSave(_ sender: Any) {
        let realm  = try! Realm()
        let user = Task()
        user.id = 0
        user.name = (txtName.text! as NSString) as String
        user.phone = (txtPhone.text! as NSString) as String
        user.address = (txtAddress.text! as NSString) as String
        try! realm.write {
            realm.add(user)
            print("user:",user.name)
        }



    }
class Task : Object {
    @objc dynamic var id : Int = 0
    @objc dynamic var name = ""
    @objc dynamic var phone = ""
    @objc dynamic var address = ""
}
@IBAction func buttonSave(_ sender: Any) {
        let realm  = try! Realm()
        let user = Task()
        user.id = 0
        user.name = (txtName.text! as NSString) as String
        user.phone = (txtPhone.text! as NSString) as String
        user.address = (txtAddress.text! as NSString) as String
        try! realm.write {
            realm.add(user)
            print("user:",user.name)
        }



    }