“添加”和“创建”之间有什么区别

时间:2016-05-20 20:11:04

标签: realm

文件陈述了明显的例如:

add(_:update:) Adds or updates an object to be persisted it in this Realm.
create(_:value:update:) Creates or updates an instance of this object and adds it to the Realm populating the object with the given value.

但是我不能完全看出其中的差异吗?

2 个答案:

答案 0 :(得分:15)

add会立即更新整个对象,因此存在您可能错过属性的危险。 create可以通过显示属性名称来更新对象的部分信息。

假设cheeseBook已经保存如下。

    let cheeseBook = Book()
    cheeseBook.title = "cheese recipes"
    cheeseBook.price = 9000
    cheeseBook.id = 1

    //update 1 - title will be empty
    try! realm.write {
        let cheeseBook = Book()
        cheeseBook.price = 300
        cheeseBook.id = 1
        realm.add(cheeseBook, update:true)            
    }

    //update2 - title will stay as cheese recipes
    try! realm.write {
        realm.create(Book.self, value:["id":1, "price":300], update:true)
    }

答案 1 :(得分:0)

add()将传入的对象添加到Realm(将对象修改为现在引用Realm中的数据),而create()在Realm中创建对象的副本并返回复制,并不修改参数。