iOS中谓词的未实现SQL生成
我在核心数据中得到以下错误iOS中谓词的未实现SQL生成,ios,objective-c,core-data,Ios,Objective C,Core Data,我在核心数据中得到以下错误 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate (mRemainderId LIKE <MSaveRemainders: 0x1740cae90> 删除数组包含 (实体:MSaverEminders;id:0xd000000000040002;数据
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate (mRemainderId LIKE <MSaveRemainders: 0x1740cae90>
删除数组包含
(实体:MSaverEminders;id:0xd000000000040002;数据:{
进一步子类别ID=零;
mDate=“2016-05-10”;
mNote=“这是财务方面的”;
mNumberOfGlasses=6;
mRemainderId=1462793810;
mRepeat=无;
mRepeatDays=“”;
mSleepTime=“晚上10:00”;
mSnooze=No;
mTime=“(\n\“05:06 pm\”\n)”;
mTitle=金融;
mTone=“”;
mWakeUpTime=“06:00 AM”;
mWaterInLitres=“1.6”;
肌重=50;
mainCategoryId=1;
子类别ID=“(空)”;
})因为您试图在不包含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];
}
}
}
因为您试图访问不包含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];
}
}
}
您的
deleteArray
将只保存字符串
?或者它持有其他对象?似乎remainderId
是MSaveRemainders
对象,而不是NSString
。您可能正在查找[NSPredicate predicateWithFormat:@“mRemainderId LIKE%@”,reminderId.mRemainderId]
。@请查看已编辑的包含删除的问题array@mortgy请参见已编辑的包含删除的问题array@Larme请参阅包含删除数组的已编辑问题您的deleteArray
将仅包含字符串
?或者它持有其他对象?似乎remainderId
是MSaveRemainders
对象,而不是NSString
。您可能正在查找[NSPredicate predicateWithFormat:@“mRemainderId LIKE%@”,reminderId.mRemainderId]
。@mortgy请查看包含delete的已编辑问题array@mortgy请参见已编辑的包含删除的问题array@Larme请参见[savedReminder.data valueForKey:@“mRemainderId”]什么是数据
属性的类型?粘贴到此处时(实体:MSaveRemainders;id:0xd000000000040002;数据:{FurtherSubcategory id=nil;..
您的MSaveRemainders包含两个属性,id
和data
数据似乎与不同的模型相关,那么什么是data
属性类型?在[savedReminder.data valueForKey:@“mRemainderId”]中的数据是什么类型的数据
属性?粘贴到这里时(实体:MSaverEminders;id:0xd000000000040002;数据:{FutureSubcategory id=nil;..
您的MSaverEminders包含两个属性,id
和data
数据似乎与不同的模型相关,那么什么是data
属性类型?