我试图删除领域中的1个对象,但无法执行此方法。有什么问题吗?
var realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction()
var soo = Sample3()
soo.sampleKey = "edit1"
soo.id = 0
realm.deleteObject(soo)
realm.commitWriteTransaction()
println("deleted")
它有这个错误。。。
swiftRealm[50559:847671] *** Terminating app due to uncaught exception 'RLMException', reason: 'Can only add an object to a Realm in a write transaction - call beginWriteTransaction on an RLMRealm instance first.'
我有点困惑,你是在尝试addObject还是deleteObject?我看到你创建了一个Sample3对象,我想它是一个RLMO对象,但IMHO你只在你想把object添加到Realm时创建一个新的RLMO对象。
如果你想从Realm中删除一个对象,你应该先从Realm获取对象,然后删除它
Sample3 *obj = [Sample3 objectsWithPredicate:[NSPredicate predicateWithFormat:@"sampleKey = %@ AND id = %d", @"edit1", 0]][0]
[realm deleteObject(obj)]
对不起,我不熟悉Swift的语法,所以上面在Obj-c中。希望能有所帮助。
Evan Chu是正确的,您正在创建一个新对象,然后要求在将其添加到Realm之前将其删除。
您首先需要查询要删除的对象(假设它已经保存在领域中)即:
var objectToDelete = Sample3.objectsWhere("id == 0")
然后你可以删除这个对象
realm.beginWriteTransaction
realm.deleteObject(objectToDelete)
realm.commitWriteTransaction
我的代码:
var hello = Sample3.objectsWhere("id = 0") // maybe: Sample3.objectsWhere("id = '0'") or Sample3.objectsWhere("sampleKey = 'edit1'")
let realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction()
realm.deleteObject(hello.firstObject() as RLMObject)
realm.commitWriteTransaction()
设置时:var hello = Sample3.objectsWhere("id == 0")
。你好是RLMResults。它不是RLMObject,则不能删除此对象。您应该像hello.firstObject()
一样删除RLMO对象更多信息:http://realm.io/docs/cocoa/0.87.1/api/Classes/RLMResults.html#//api/name/realm