我在核心数据中收到以下错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate (mRemainderId LIKE <MSaveRemainders: 0x1740cae90>
以下是我使用的代码
-(void) deleteRemainders:(NSMutableArray*) deleteArray{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MSaveRemainders" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
for (NSString *remainderId in deleteArray) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mRemainderId LIKE %@", remainderId];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError *error;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *managedObject in fetchedObjects) {
[self.managedObjectContext deleteObject:managedObject];
}
}
}
删除数组包含
(entity:MSaveRemainders; id:0xd000000000040002; data:{ FurtherSubCategoryId = nil; mDate =“2016-05-10”; mNote =“这是财务”; mNumberOfGlasses = 6; mRemainderId = 1462793810; mRepeat =无; mRepeatDays =“”; mSleepTime =“晚上10点”; mSnooze =否; mTime =“(\ n \”05:06 pm \“\ n)”; mTitle =财务; mTone =“”; mWakeUpTime =“06:00 AM”; mWaterInLitres =“1.6”; mYourWeight = 50; mainCategoryId = 1; subCategoryId =“(null)”; })
答案 0 :(得分:0)
因为你试图在不包含NSString的数组中访问NSString,所以你的数组只包含MSaveRemainders
所以你应该得到MSaveRemainders
种类的对象并检查它的属性,
您的方法应如下所示
-(void) deleteRemainders:(NSMutableArray*) deleteArray{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MSaveRemainders" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
for (MSaveRemainders *savedReminder in deleteArray) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mRemainderId LIKE %@", [savedReminder.data valueForKey:@"mRemainderId"]];
// or like the follwing if "data" is a property of a class ( model )
/*
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mRemainderId LIKE %@", savedReminder.data.mRemainderId ];
*/
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError *error;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *managedObject in fetchedObjects) {
[self.managedObjectContext deleteObject:managedObject];
}
}
}