Swift中的核心数据同步

Swift中的核心数据同步,swift,core-data,nsmanagedobject,nsmanagedobjectcontext,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

我正在尝试将刚刚从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()
}
func downloadDetails(){context上下文:NSManagedObjectContext,main:MainEntity,completion()->Void{
//首先,我要在正确的上下文中获取匹配的对象
如果让matchingMain=try context.existingObjectWithID(show.objectID)作为?main实体{
//然后,我向我的主要对象和
//在json响应中循环。
//问题:main和matchingMain在
//在第一次迭代中,当我尝试
获取详细信息()
请尝试detailsJSON.children()中的detailJSON{
let detail=new DetailFromJson(detailJson)
//第二项出现错误,因为匹配主数据
//不再存在(“数据:”)
detail.main=匹配main
}
saveContexts()
完成()
}
我对这个很陌生,所以这可能是错误的方式

但如果有人能告诉我如何将数据保留足够长的时间以正确设置,那就太好了。谢谢。

///UPDATE///

好的,结果是您不能将托管对象作为参数传递,而期望它留在内存中

我解决了这个问题,取而代之的是在我的函数中为我的main managed发出一个fetch请求(并在主上下文中执行所有操作)


感谢您的帮助。

当您问一个问题,在哪里会收到错误消息时,您真的需要在问题中包含这些错误消息。它们通常包括重要的细节。一小段重复的示例代码也会有很大帮助。What's有多个语法错误,无法知道问题在哪里em是谎言,特别是因为它听起来像是一个作用域/异步问题。错误不一定是错误,但如果没有更多信息,实际上不可能查看代码并告诉您出了什么问题。我假设您获取匹配对象的调用不会发生在上下文队列上。这可以解释释放(或者至少证明发生了奇怪的事情)。