如何检查核心数据中是否存在对象

我在这里搜索了答案,但这些都没有解决我的问题……
我已经在Truck Managed Object Subclass中的核心数据中保存了一些数据。 这是代码:

 for (NSDictionary *dictTruck in self.trucksArray) { Truck *truck = [NSEntityDescription insertNewObjectForEntityForName:@"Truck" inManagedObjectContext:_managedObjectContext]; Country *country = [NSEntityDescription insertNewObjectForEntityForName:@"Country" inManagedObjectContext:_managedObjectContext]; NSFetchRequest *truckRequest = [[NSFetchRequest alloc]init]; NSEntityDescription *truckDescription = [NSEntityDescription entityForName:@"Truck" inManagedObjectContext:_managedObjectContext]; [truckRequest setEntity:truckDescription]; NSMutableArray *mutableReq = [[_managedObjectContext executeFetchRequest:truckRequest error:nil]mutableCopy]; self.trucksArray = [[NSMutableArray alloc]initWithArray:mutableReq]; [truck setModel:[dictTruck objectForKey:@"model"]]; [truck setYear:[dictTruck objectForKey:@"year"]]; [truck setCountry:country]; [country setCountryName:[dictTruck objectForKey:@"country"]]; [_managedObjectContext save:nil]; } 

而且这很好用。 现在,问题是我有JSON,我通过AFNetworking从服务器下载格式如下:

 { "trucks": [ { "model": "Scania", "year": "2014", "country": "Sweden" }, { "model": "DAF", "year": "2012", "country": "Ireland" } ] } 

这个JSON每小时更新一次,所以有旧的JSON数据+新…现在,我的问题是如何检查Core Data中是否存在此对象,例如:Truck.model = @“Scania”,Truck.year = @“2014”,Truck.Country.countryName = @“瑞典”; 如果它匹配所有这些条件,它不应该保存在CD …
提前致谢。
更新:
在这段代码中是对核心数据中对象的请求,因为我已经尝试了很多方法来解决这个问题。

在我看来,响应json中应该有一个UNIQUE truck_id ,就像这样

 { "trucks": [ { "id": "00000001" "model": "Scania", "year": "2014", "country": "Sweden" }, { "id": "00000002" "model": "DAF", "year": "2012", "country": "Ireland" } ] } 

id保存到Truck模型,每次从服务器获得响应时,只需检查核心数据中是否存在具有相同id的模型。

对于每辆卡车json,首先提出取件请求

 NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; request.entity = [NSEntityDescription entityForName:@"Truck" inManagedObjectContext:context]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"truckID = %d", truckIDInResponse]; request.predicate = predicate; NSError *error = nil; NSArray *objs = [context executeFetchRequest:request error:&error]; if (error) { [NSException raise:@"no truck find" format:@"%@", [error localizedDescription]]; } if (objs.count > 0) { // there is a truck with same id exsist. Use update method }else { // there's no truck with same id. Use insert method } 

truckID是您的Truck型号的属性。