Swift 中的核心数据同步
Core Data syncing in Swift
我正在尝试 link 我刚刚从 json 创建的 NSManagedObject 到另一个已经保存的 NSManagedObject,但我无法让它工作。
基本上,当我需要显示详细信息时,我的函数如下所示:
func downloadDetails(){context context: NSManagedObjectContext, main:MainEntity, completion () -> Void {
// First, I'm getting the matching object in the right context
if let matchingMain = try context.existingObjectWithID(show.objectID) as? MainEntity {
// Then, i'm making a request for the details from my main object and
// looping inside the json response.
// Problem: main and matchingMain are wiped out from memory after
// the first iteration, and the loop throws an error when i try to make
fetchDetails()
for detailJSON in try detailsJSON.children() {
let detail = new DetailFromJson(detailJson)
// I get an error on the second item because matchingMain data
// is no longer here ("data: <fault>")
detail.main = matchingMain
}
saveContexts()
completion()
}
我对此很陌生,所以这可能是错误的方式。
但如果有人能向我解释如何将数据保留足够长的时间以正确设置它,那就太好了。谢谢
/// 更新 ///
好的,事实证明您不能将托管对象作为参数传递并期望它保留在内存中。
我解决了这个问题,方法是在我的函数中为我的 main managed 发出获取请求(并在 main 上下文中执行所有操作)。
感谢您的帮助。
我正在尝试 link 我刚刚从 json 创建的 NSManagedObject 到另一个已经保存的 NSManagedObject,但我无法让它工作。
基本上,当我需要显示详细信息时,我的函数如下所示:
func downloadDetails(){context context: NSManagedObjectContext, main:MainEntity, completion () -> Void {
// First, I'm getting the matching object in the right context
if let matchingMain = try context.existingObjectWithID(show.objectID) as? MainEntity {
// Then, i'm making a request for the details from my main object and
// looping inside the json response.
// Problem: main and matchingMain are wiped out from memory after
// the first iteration, and the loop throws an error when i try to make
fetchDetails()
for detailJSON in try detailsJSON.children() {
let detail = new DetailFromJson(detailJson)
// I get an error on the second item because matchingMain data
// is no longer here ("data: <fault>")
detail.main = matchingMain
}
saveContexts()
completion()
}
我对此很陌生,所以这可能是错误的方式。
但如果有人能向我解释如何将数据保留足够长的时间以正确设置它,那就太好了。谢谢
/// 更新 ///
好的,事实证明您不能将托管对象作为参数传递并期望它保留在内存中。
我解决了这个问题,方法是在我的函数中为我的 main managed 发出获取请求(并在 main 上下文中执行所有操作)。
感谢您的帮助。