iOS Core Data executeFetchRequest返回空对象

iOS Core Data executeFetchRequest返回空对象,第1张

概述我正在使用Core Data来存储包含可转换NSDictionary属性的实体.我存储后可以在.SQLite文件中看到一个对象,所以我觉得(?)我很擅长.但是,当我尝试检索整个实体时,我得到一个NSArray,其中一个元素[0]为零,当然,当我尝试访问任何属性时(当然)崩溃. HVBAppDelegate *appDelegate = [[UIApplication sharedApplicati 我正在使用Core Data来存储包含可转换NSDictionary属性的实体.我存储后可以在.sqlite文件中看到一个对象,所以我觉得(?)我很擅长.但是,当我尝试检索整个实体时,我得到一个NSArray,其中一个元素[0]为零,当然,当我尝试访问任何属性时(当然)崩溃.

HVBAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];NSManagedobjectContext *context = [appDelegate managedobjectContext];NSEntityDescription *entityDesc = [NSEntityDescription entityForname:@"Events" inManagedobjectContext:context];NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];[fetchRequest setEntity:entityDesc];NSError *error;NSArray *objects = [context executeFetchRequest:fetchRequest error:&error];// [objects count] = 1 but objects[0] = nil// and the following line crashes of courseNSMutableDictionary *data = objects[0][@"data"];

知道我做错了什么吗?谢谢!

(请注意,我已经设置了一个带有NSDictionary属性和其他属性的Events类.)

以下是我设置实体的方法:

Events.h:

Events.m:

解决方法 我弄清楚发生了什么:

首先,’对象’有一行但显得“空”的原因是因为这是默认行为.除非您通过发送setReturnsObjectsAsFaults消息进行更改,否则在您明确要求之前不会检索值:

[fetchRequest setReturnsObjectsAsFaults:NO];

注意,NSLogging对象没有这个产生“data:”.

其次,最重要的是,“对象”不是NSDictionarys或NSMutableDictionarys的NSArray.因此,虽然我可以用[objects [0]替换[objects objectAtIndex:0]“,但我不能用[objects [0] [@”created“]替换[objects [0] valueForKey:@”created“].这就是导致崩溃的原因.

希望这有助于某人!

总结

以上是内存溢出为你收集整理的iOS Core Data executeFetchRequest返回空对象全部内容,希望文章能够帮你解决iOS Core Data executeFetchRequest返回空对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1076949.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存