Ios 在领域中写入对象后调用完成块
我正在使用Ios 在领域中写入对象后调用完成块,ios,swift,realm,Ios,Swift,Realm,我正在使用Realm,到目前为止我很喜欢它,但现在我正试图找到一种方法来知道何时在Realm中写入对象。 假设我从领域中移除对象: func deleteObjects<T: Object>(objects: Results<T>) { let realm = Realm() try! realm.write { realm.delete(objects) } } func删除对象(对象:结果) { 让realm=rea
Realm
,到目前为止我很喜欢它,但现在我正试图找到一种方法来知道何时在Realm中写入对象。
假设我从领域中移除对象:
func deleteObjects<T: Object>(objects: Results<T>)
{
let realm = Realm()
try! realm.write {
realm.delete(objects)
}
}
func删除对象(对象:结果)
{
让realm=realm()
试试看!写吧{
realm.delete(对象)
}
}
是否有一些现有方法可以让我知道何时从数据库中删除这些对象?比如:
func deleteObjects<T: Object>(objects: Results<T>)
{
let realm = Realm()
try! realm.write {
realm.delete(objects, completion {
print("Objects deleted")
})
}
}
func删除对象(对象:结果)
{
让realm=realm()
试试看!写吧{
删除(对象,完成){
打印(“删除的对象”)
})
}
}
这是相关章节
// Add to the Realm inside a transaction
try! realm.write {
realm.add(author)
}
用你的例子
func deleteObjects<T: Object>(objects: Results<T>)
{
do {
let realm = try Realm()
try realm.write({
realm.delete(<#T##Object#>)
})
} catch {
print(error)
}
}
Realm.delete(:)
是一个同步操作,因此在调用返回时对象已被删除。提交写入事务(即,您传递给写入的块完成)后,其他线程可以看到删除,并且它们的域刷新以获取更改(通过显式调用Realm.refresh
,或者通过在下一次运行循环迭代中发生的自动刷新).只有在捕获错误时才会调用catch块吗?您是在问如何知道delete
何时完成?这是一个同步操作,因此当调用返回时,对象已被删除。写入事务提交后(即,传递给write
的块完成),其他线程可以看到删除,并且它们的域刷新以获取更改(通过显式调用Realm.refresh
,或者通过在下一次运行循环迭代中发生的自动刷新)。好的!我不知道,真的很酷。谢谢@bdash
func deleteObject(object: Object, completionClosure: () -> ()) {
if let realm = object.realm {
do {
try realm.write({
realm.delete(object)
completionClosure()
})
} catch {
print(error)
}
}
}