【发布时间】:2015-07-09 17:57:19
【问题描述】:
我想实现以下目标:
- 在 B 类中,添加 1 个对象后重新加载我的数据库。
reloadDatabase()在完成块中被调用。 - 在B类中,
reloadDatabase()会调用classA中的getObjects()来获取最新的数据库对象列表并传递给B类中的objectList
问题:我如何确保每当我在 classB 中调用 getObjectList() 时,我总是会得到最新的列表?据我了解,我的objectList 可能不会在reloadDatabase() block 中更新。当reloadDatabase() 还没有到达完成块时(objectList 仍然是旧的objectList),我可以调用getObjectList()。
我对闭包和块很陌生。非常感谢任何指导!
class classA: NSObject {
func addThisObject(object: RLMObject, completionBlock: () -> ())){
...
completionBlock()
}
func getObjects (completionBlock: ((list: [RLMObject]) -> ())){
var recordList = [RLMObject]()
...
completionBlock(list: recordList)
}
}
class classB: NSObject {
var objectList = [RLMObject]()
func addObject (object: RLMObject) {
classA().addThisObject(object, completionBlock: {() -> () in
self.reloadDatabase()
})
}
func reloadDatabase() {
classA().getObjects{(list) -> () in
self.objectList = list
}
}
func getObjectList() -> [RLMObject] {
return objectList
}
}
【问题讨论】:
标签: swift closures completion-block