一旦在Realm中写入对象,就调用完成块

时间:2016-07-01 22:20:04

标签: ios swift realm

我使用Realm并且我喜欢它到目前为止,但现在我正试图找到一种方法来了解何时在Realm中写入对象。 让我们说我从Realm中删除对象:

func deleteObjects<T: Object>(objects: Results<T>)
{
     let realm = Realm()
     try! realm.write {
         realm.delete(objects)
     }
} 

是否有一些现有方法可以让我知道何时从数据库中删除这些对象?类似的东西:

func deleteObjects<T: Object>(objects: Results<T>)
{
     let realm = Realm()
     try! realm.write {
         realm.delete(objects, completion {
            print("Objects deleted")
         })
     }
} 

2 个答案:

答案 0 :(得分:1)

Realm.delete(_:)是同步操作,因此在调用返回时已删除对象。提交写入事务后,其他线程可以看到删除(即,您传递给写入的块完成),并且他们的Realms刷新以获取更改(通过显式调用Realm.refresh或通过自动 - 刷新发生在下一个runloop迭代中。)

答案 1 :(得分:0)

Full documentation here for 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)
    }
}

这是另一个例子,使用传递给函数的闭包。

func deleteObject(object: Object, completionClosure: () -> ()) {
    if let realm = object.realm {
        do {
            try realm.write({
                realm.delete(object)
                completionClosure()
            })
        } catch {
            print(error)
        }
    }
}