gpt4 book ai didi

ios - 创建 NSFetchedResultsController 时获取 objc_exception_throw

转载 作者:行者123 更新时间:2023-11-28 20:31:38 25 4
gpt4 key购买 nike

创建 NSFetchedResultsController 对象时出现以下错误

编辑

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Subscriptions" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];

编辑结束

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];


#0 0x977109c6 in __pthread_kill ()
#1 0x96296f78 in pthread_kill ()
#2 0x96287bdd in abort ()
#3 0x0022eb71 in uncaught_exception_handler ()
#4 0x024b70fc in __handleUncaughtException ()
#5 0x0264af0f in _objc_terminate ()
#6 0x052fb8de in safe_handler_caller ()
#7 0x052fb946 in std::terminate ()
#8 0x052fcab2 in __cxa_throw ()
#9 0x0264ade1 in objc_exception_throw ()
#10 0x00617f39 in -[NSFetchedResultsController initWithFetchRequest:managedObjectContext:sectionNameKeyPath:cacheName:] ()

我应该从哪里开始寻找问题的任何想法。此错误毫无帮助。

我已经设置了一个断点并且已经检查了输入init函数有两个输入,一个是managed object,另一个是fetch request。

这两个对象都是有效的,这与下面的答案中提到的不同。

** 解决方案 **看起来排序描述符是强制性的,感谢 Rog

最佳答案

实际上,这是一个非常有用的错误。如果您打算使用 Objective-C 进行编程,则需要习惯阅读这些堆栈跟踪。

它说你给了 initWithFetchRequest 一些难吃的东西。事实上,它非常糟糕,以至于它抛出了一个异常。此外,我们知道您没有异常处理程序,因为调用了 std::terminate,最终程序中止了。

您可以@catch 异常并自己处理它以查看问题,或者更好的是,放置一个断点以捕获所有异常(这是一个很好的建议,因为在 objective-c 中,异常实际上是异常的)。

单击断点 Pane (在左侧,带有右箭头图标)。底部是一个小+。点击它。选择“添加异常断点”并让它在所有异常被抛出时中断。

现在,您可以查看实际异常,它会指导您。很可能,它会告诉您获取请求配置不正确。也可能是您给它提供了错误的 MOC 或其他参数。

关于ios - 创建 NSFetchedResultsController 时获取 objc_exception_throw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com