Я просматриваю NSArray и посылающий, что я получаю на Core Data, например:Swift 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, уже существующему в моей «Задачей» основных данных по атрибуту «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)
}
Я делаю что-то не так или я что-то отсутствует? Я просто хочу проверить, существует ли nTask.id в моем CoreData, и если он не существует, отправьте полную задачу в мою CoreData.
Благодарим за помощь.
С уважением.
Здравствуйте, большое спасибо за ваш ответ, я вижу, что вы сделали, чтобы все понять, это может занять некоторое время ^^ – fselva
Ваше решение работает как шарм, я немного изменил код, который я не распечатывал там, чтобы заставить его работать, и все в порядке. обновление является лучшим решением. Если идентификатор один и тот же, но что-то изменилось, то оно будет обновляться без создания другого. Большое спасибо за вашу помощь! – fselva