0

我的一个应用程序中有一个核心数据。所有数据都是从服务器填充的。有时我必须检查来自服务器的数据是否已经存在于核心数据中。如果它已经存在,只需替换它。检查可以用我为每个条目拥有的唯一值来完成。我怎样才能做到这一点?这就是我所做的:

` for(int i=0;i<[ar count];i++){
            NSFetchRequest * request = [[NSFetchRequest alloc] init];
         NSManagedObjectContext *context=[Server serverInfo].context;

            [request setEntity:[NSEntityDescription entityForName:@"Coupon" inManagedObjectContext:context]];
            [request setPredicate:[NSPredicate predicateWithFormat:@"upc_code = %@",[ [ar objectAtIndex:i]objectForKey:@"upc_code"]]];
            NSUInteger count = [context countForFetchRequest:request error:nil];
            [request release];
          //  [context ]

        if (count > 0){
            NSLog(@"found");}'

这里 ar 是从服务器获取的数组。上下文是用户有时可以在服务器的条目中进行编辑。我需要服务器中的所有数据与设备同步。

4

1 回答 1

1

不要做 a countForFetchRequest,而是做executeFetchRequest:error:which 将返回一个带有结果的数组。这个数组应该有 0 个或 1 个结果,超过 1 个会不一致,因为我假设你upc_code是唯一的。

如果您有 0 个结果,请在您的上下文中创建一个新对象并设置其属性

如果您有 1 个结果,只需更新 executeFetchRequest:error 返回的该对象的属性:

最后保存您的上下文并完成

于 2012-05-25T06:25:56.137 回答