获取核心数据,NSException错误
Posted
技术标签:
【中文标题】获取核心数据,NSException错误【英文标题】:Fetch core data, NSException error 【发布时间】:2015-09-03 19:08:19 【问题描述】:我正在使用核心数据开发应用程序。实现的最大部分运行良好,但在最后一刻我得到了一个 NSException 错误。我可以获取核心数据并将它们放在一个字符串中,但我不能将它放在 textView、标签或其他任何东西中。
这是获取的代码。
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Template"];
self.template = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSLog(@"%@ viewDidLoad", [template valueForKey:@"name"]);
self.nameStringString = [template valueForKey:@"name"];
NSLog(@"%@ viewDidLoad String", self.nameStringString);
self.testLabel.text = self.nameStringString;
我在代码中测试了一会儿数据是否仍然完好或丢失。此处的代码在最后一句之前都可以正常工作。我该怎么办?
提前谢谢你!
编辑:这是我得到的错误。出现错误后,应用程序将被终止。 2015-09-03 21:20:54.511 ****[1640:671115]-[__NSArray0 rangeOfCharacterFromSet:]:无法识别的选择器发送到实例 0x1255022a0
【问题讨论】:
那些 NSLog 语句显示了什么? ggfgg,ggfgg,ggfgg,ggfgg,ggfgg,ggfgg,ggfgg 在编写核心数据方法时,我创建了一些新对象,而不是重写旧对象。最后一个是 ggfgg 在测试中。 好的,试试self.testLabel.text = self.nameStringString[0]
试过了,在代码中实现时出现这个错误:Expected method to read array element not found on object of type 'NSString * _Nullable'
【参考方案1】:
executeFetchRequest
返回一个 NSArray,即使只有一个对象要获取。在获取valueForKey
之前需要提取数组的各个成员:
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Template"];
NSArray *templateArray = [managedObjectContext executeFetchRequest:fetchRequest error:nil];
NSManagedObject *firstTemplate = [templateArray firstObject];
self.nameStringString = [firstTemplate valueForKey:@"name"];
NSLog(@"%@ viewDidLoad String", self.nameStringString);
self.testLabel.text = self.nameStringString;
【讨论】:
我应该如何处理“firstObject”?出现错误。 @user3638160 我已经修改了代码以使用本地 NSArray 来保存获取的结果。我认为这应该有效。出于兴趣,self.template
是什么类?
效果惊人!但现在我有另一个(小)问题。我想获取最新的。当我更新或制作一个新对象时,它会获取第一个制作的对象。我怎么能改变这个?
将firstObject
更改为lastObject
。
非常感谢!你让我很快乐 :)。我自己很愚蠢,我没有看到最后一个小问题:P以上是关于获取核心数据,NSException错误的主要内容,如果未能解决你的问题,请参考以下文章
(Swift 3) 父子上下文崩溃核心数据 (libc++abi.dylib: 以 NSException (Recorded Frame) 类型的未捕获异常终止)