获取核心数据,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错误的主要内容,如果未能解决你的问题,请参考以下文章

获取 NSException 错误崩溃应用程序

带有 sigabrt 错误的 NSexception

(Swift 3) 父子上下文崩溃核心数据 (libc++abi.dylib: 以 NSException (Recorded Frame) 类型的未捕获异常终止)

使用 CLLocationCoordinate2D 初始化获取 NSException 类型的未捕获异常

为啥会出现 NSException 错误?

NSException 的终止异常类型