Swift中的核心数据同步

时间:2015-11-20 17:16:21

标签: swift core-data nsmanagedobject nsmanagedobjectcontext

我试图将刚从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()
}

我对此很陌生,所以可能是错误的方式。

但如果有人能够解释我如何保留足够长的数据来正确设置数据,那就太好了。感谢。

1 个答案:

答案 0 :(得分:0)

///更新///

好的,事实证明你不能将托管对象作为参数传递,并期望它留在内存中。

我通过在我的函数内部管理我的主要托管请求来解决问题(并在主要上下文中执行所有操作)。

感谢您的帮助。