【问题标题】:MagicalRecord in method saveWithBlock doesn't find existing entities with MR_FindFirstByAttribute - Swift方法 saveWithBlock 中的 MagicalRecord 找不到具有 MR_FindFirstByAttribute 的现有实体 - Swift
【发布时间】:2015-06-03 15:02:17
【问题描述】:

我正在尝试使用此块导入实体

 MagicalRecord.saveWithBlock({   (moc: NSManagedObjectContext!) in                

      //parsing inquiries
      for (index: String, jsonInquiry: JSON) in json["data"]["inquiries"] {

           var idInquiry =  jsonInquiry["id_inquiry"].int! 
           var inquiry: Inquiry

           //trying to find existing entity
           if let existingInquiry = Inquiry.MR_findFirstByAttribute("id", withValue: idInquiry, inContext: moc) as? Inquiry {
                inquiry = existingInquiry
                println("fetching existing inquiry: \(idInquiry)")
            } else {
                inquiry = Inquiry.MR_createInContext(moc) as! Inquiry
                println("creating new inquiry: \(idInquiry)")
            }
            ...
       }
  }    

只有第一个实体被发现为现有,其他实体创建为新的

但是当我一次预取所有实体时:

 MagicalRecord.saveWithBlock({  (moc: NSManagedObjectContext!) in

      //preFetch all entities        
      var existingInquiries = [Int:Inquiry]()
      for item in Inquiry.MR_findAllInContext(moc) {
           if let existingItem = item as? Inquiry {
                existingInquiries[ existingItem.id ] = existingItem
           }
      }

      //parsing inquiries
      for (index: String, jsonInquiry: JSON) in json["data"]["inquiries"] {
           ....     
           var idInquiry =  jsonInquiry["id_inquiry"].int! 
           var inquiry: Inquiry

           if let existingInquiry = existingInquiries[idInquiry] {
                inquiry = existingInquiry
                    println("fetching existing inquiry: \(idInquiry)")
                } else {
                    inquiry = Inquiry.MR_createInContext(moc) as! Inquiry
                    println("fetching new inquiry: \(idInquiry)")
                }
          }
          ....
   }

所有实体都被发现为现有

有人能找出我的错误或错误吗?也许我错过了一些基本的东西。 我为此苦苦挣扎了好几个小时

谢谢

我使用 XCODE 版本 6.3 (6D570) 和 Swift 1.2

【问题讨论】:

    标签: swift core-data import magicalrecord


    【解决方案1】:

    我发现了我的错误 a 在我的循环中有这段代码 - 它应该是上一级 :)

    for inquiry in existingInquiries.values {
           if !contains(importedInquiries, inquiry) {
                    inquiry.MR_deleteInContext(moc)
           }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多