【发布时间】:2015-05-08 10:42:17
【问题描述】:
我在更新核心数据时遇到问题。 我正在后台线程中下载数据,与核心数据和计数中的标识符进行比较,但现在无法更新我想使用 JSON 响应检查核心数据中存在的标识符,如果 JSON 响应中存在 id,请留下它并如果 JSON 响应中不存在(这意味着该记录已在服务器端删除)
在此代码中,我正在检查 id 是否存在于核心数据中,现在我想检查 id 是否存在于 json 中以更新记录
任何帮助将不胜感激提前感谢 请检查代码如何将数据存储到核心数据中
for (int i = 0; i < [arrayData count]; i++) {
NSNumber * idNum = [arrayData objectAtIndex:i][@"id"];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Deal"];
[request setPredicate:[NSPredicate predicateWithFormat:@"identifier == %@",idNum]];
[request setFetchLimit:1];
NSUInteger count = [_managedObjectContext countForFetchRequest:request error:&error];
if (count == NSNotFound) {
NSLog(@"ERROR");
}else if (count == 0) {
Deal * dealsEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Deal" inManagedObjectContext:_managedObjectContext];
NSString * name = [arrayData objectAtIndex:i][@"name"];
dealsEntity.nameAttribute = name;
dealsEntity.identifier = idNum;
[appDelegate saveContext];
}
[self performSelectorOnMainThread:@selector(updateData:) withObject:_myArray waitUntilDone:YES];
}
- (void) updateData:(NSArray *)yourData {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Deal" inManagedObjectContext:_managedObjectContext];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setEntity:entity];
NSError *error;
yourData = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
self.myArray = yourData;
[listTableView reloadData];
}
我已经尝试过更新或删除 coredata 中的记录
for (int d = 0; d < [_myArray count]; d++) {
Deal * deal = (Deal*)_myArray[d];
NSNumber * identifier = [deal identifier];
if ([identifier isEqualToNumber:[[arrayData objectAtIndex:d] valueForKey:@"id"]] ) {
NSLog(@"equal %d",d);
} else {
NSLog(@"Kill it ");
}
}
但这里的问题是Coredata在使用json检查时有115条记录但json只有114条记录并且它返回崩溃
【问题讨论】:
-
您遇到了什么问题?
-
现在正在检查来自 JSON 的 iD,如果它不存在于核心数据中,则必须存储上述代码工作正常
-
但是现在我想通过检查 json 中是否存在 Coredata 标识符来更新数据库并更新数据库
-
例如,将来会从 json 响应中删除一条记录,因此核心数据也必须检查 json 响应
-
我想要一些代码来更新核心数据中的数据