2016-07-13 8 views
3

realm.createと電話をすれば、それは自動更新realm object from the realm resultsになりますか?Realm.createはオブジェクトを同じ主キーで更新しますか?

// Assuming a "Book" with a primary key of `1` already exists. 
try! realm.write { 
realm.create(Book.self, value: ["id": 1, "price": 9000.0], update: true) 
// the book's `title` property will remain unchanged. 
} 

現在、最新のオブジェクトを取得するために再び領域から読み取る必要があるようです。私が間違っていれば私を修正してください。

おかげ

答えて

5

はい、Realm.create(_:value:update:)を呼び出すと、更新されている既存のオブジェクトになりますときupdate: trueを指定します。ここで

を実証し、あなたがそれを提供したコードに基づいてスニペットですこの:

class Book: Object { 
    dynamic var id = "" 
    dynamic var title = "" 
    dynamic var price = 0.0 

    override class func primaryKey() -> String? { return "id" } 
} 


let realm = try! Realm() 
let book = Book(value: ["1", "To Kill a Mockingbird", 9.99]) 
try! realm.write { 
    realm.add(book) 
} 

let results = realm.allObjects(ofType: Book.self) 

try! realm.write { 
    realm.createObject(ofType: Book.self, populatedWith: ["id": "1", "price": 7.99], update: true) 
} 

print(book) 
print(results) 

このコードは次のような出力生成:既存のオブジェクトのpriceプロパティを見ることができるように

Book { 
    id = 1; 
    title = To Kill a Mockingbird; 
    price = 7.99; 
} 
Results<Book> (
    [0] Book { 
     id = 1; 
     title = To Kill a Mockingbird; 
     price = 7.99; 
    } 
) 

を持っています新しい値に更新されました。

+0

確認と詳細なデモをお寄せいただきありがとうございます。私のキーにはタイプミスがあることが判明しました! – perwyl

関連する問題