我瀏覽的NSArray和發送我所得到的核心數據,例如:斯威夫特CoreData比較字符串與實體
let json2:NSArray = NSJSONSerialization.JSONObjectWithData(data.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: &error) as! [NSArray]
for dict in json2 {
var apps = [String]()
//Creation du lien vers la base SQLite
let entityDescription = NSEntityDescription.entityForName("Task", inManagedObjectContext: self.context!)
let nTask = Task(entity: entityDescription!, insertIntoManagedObjectContext: self.context)
let request = NSFetchRequest()
request.entity = entityDescription
var error: NSError?
var objects = self.context?.executeFetchRequest(request, error: &error)
if let summary = dict["summary"] as? String{
nTask.summary = summary
}
if let description = dict["description"] as? String{
nTask.detail = description
}
if let context = dict["context"] as? String{
nTask.context = context
}
if let due = dict["due"] as? String {
nTask.date = due
}else{
nTask.date = "No Ending Date"
}
if let status = dict["status"] as? String{
nTask.status = status
}
if let responsible = dict["responsible"] as? String{
nTask.responsable = responsible
}
if let id = dict["id"] as? String{
nTask.id = id
}
println(nTask)
/*let match = objects![0] as! NSManagedObject
let result = match.valueForKey("id") as! String
println(result)
if result != nTask.id{*/
self.context?.save(nil)
//}
的發送效果很好,核心數據填充,一切似乎是確定。
什麼是評論是我正在尋找什麼,目前不起作用。我想檢查一下是否爲nTask.id,它是一個字符串,即「id」鍵的值,與屬性「id」上我的Core Data「Task」上已有的任何id相等。
我正在創建實體描述,請求和請求返回,然後嘗試與nTask.id進行比較,但它總是匹配,我總是訪問我的self.context?.save(nil)
,我得到了氣球,而我沒有想要它..0。 這就是我想要做的事:
let entityDescription = NSEntityDescription.entityForName("Task", inManagedObjectContext: self.context!) //creation of the Entity Description for my Entity, "Task"
let request = NSFetchRequest()
request.entity = entityDescription //Creation of the request on the Entity "Task"
var error: NSError?
var objects = self.context?.executeFetchRequest(request, error: &error) //Results are sent to my variable objects
let match = objects![0] as! NSManagedObject
let result = match.valueForKey("id") as! String
println(result)
if result != nTask.id{ //try to compare what the request return with the nTask.id
self.context?.save(nil)
}
我做得不對還是我失去了一些東西?我只想檢查我的CoreData上是否存在nTask.id,如果它不存在,請將完整的Task發送到我的CoreData。
謝謝你的幫助。
問候。
你好,非常感謝你的回答,我明白你做了什麼來理解一切,它可能需要我一會兒^^ – fselva
你的解決方案就像一個魅力,我編輯了一些我沒有打印的代碼在那裏使其工作,並沒有問題。更新是最好的解決方案。如果id相同但任何改變,像這樣它將被更新而不創建另一個。非常感謝你的幫助! – fselva