【发布时间】: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