NSFetchRequest 导致 SIGABRT 或 EXC_BAD_ACCESS

发布于 2024-11-04 11:28:44 字数 447 浏览 0 评论 0原文

我正在使用这个简单的代码来执行我的获取请求

NSArray *fetchResults = [moc executeFetchRequest:request error:&error];

NSLog(@" i Want show my result : %@",fetchResults); ->原因 SIGABRT

如果我在创建之后立即在持久存储上使用,则会出现错误。

PS:存储是在填充和请求之间保存的。

但是如果我关闭应用程序并重新打开(在这种情况下商店存在),我就没有错误。

在某些情况下,我可以查看此消息:在抛出“NSException”实例后终止调用,

但我无法访问此异常。

如果我计算获取结果,我有一个很好的数字,这真的很奇怪。

感谢您的帮助。

I'm using this simple code for my fetch request

NSArray *fetchResults = [moc executeFetchRequest:request error:&error];

NSLog(@" i want show my result : %@",fetchResults); -> cause SIGABRT

If i'm using on my persistent store just after this creation, i have an error.

PS: the store was save between the populate and the request.

But if i close the app, and reopen ( in this case the store exist), i have no error.

in some case i can view this message : terminate called after throwing an instance of 'NSException'

but i can't access to this exception.

if i count the fetch results, i have a good number, it's really strange.

Thanks for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不气馁 2024-11-11 11:28:44

好的,我已经找到问题了!

在填充代码中,我的关系之一是通过自动释放插入的。

把这个去掉,现在就OK了。

这不是一个好的解决方案:

 NSManagedObject *relationEntity = [[NSEntityDescription insertNewObjectForEntityForName:@"picture" inManagedObjectContext:moc] autorelease];

简单地删除自动释放:

NSManagedObject *relationEntity = [NSEntityDescription insertNewObjectForEntityForName:@"picture" inManagedObjectContext:moc];

我在核心数据中忘记了这一点(不要使用释放,只需将对象设置为nil)!

Okay, I have found the problem!

In the populate code, one of my relationships was insert with an autorelease.

Remove this, and now it's OK.

This is not a good solution:

 NSManagedObject *relationEntity = [[NSEntityDescription insertNewObjectForEntityForName:@"picture" inManagedObjectContext:moc] autorelease];

Simply remove autorelease:

NSManagedObject *relationEntity = [NSEntityDescription insertNewObjectForEntityForName:@"picture" inManagedObjectContext:moc];

I have forgotten this in core data (don't use release, just set object to nil)!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文