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)
        }
    }
}