NSFetchRequest 在第一次运行时返回对象,但以后不返回

Posted

技术标签:

【中文标题】NSFetchRequest 在第一次运行时返回对象,但以后不返回【英文标题】:NSFetchRequest Return object first time it is run but not subsequent times 【发布时间】:2011-11-03 02:39:53 【问题描述】:

我有一组对象,对于这组对象中的每个对象,我都在调用一个内部包含 NSFetchRequest 的方法。此 NSFetchRequest 用于根据传递给方法的 id 获取对象。对于我的每个对象,如果它是第一次在 NSFetchRequest 的谓词中使用 id 时,我调用此方法,它返回正确的对象,之后每次如果再次使用该 id 则返回 nil。我对此感到非常困惑,找不到任何关于为什么会发生这种情况或我做错了什么的任何事情。任何帮助将不胜感激。

这是我的 NSFetchRequest 的代码:

NSFetchRequest *request = [[NSFetchRequest alloc] init];

[request setEntity:[NSEntityDescription entityForName:@"Styles" inManagedObjectContext:[self managedObjectContext]]];

[request setPredicate:[NSPredicate predicateWithFormat:@"style_id == %@", style_id]];

NSError *error = nil;

Styles *r_styles = [[[self managedObjectContext] executeFetchRequest:request error:&error] lastObject];

[request release]; 

【问题讨论】:

【参考方案1】:

我发现了我的问题。当我应该将其作为 NSNumber 传递时,我将我的 id 作为 NSString 传递。将其更改为 NSNumber 解决了我的问题。

【讨论】:

您应该在此处接受您的答案,以便问题显示为已回答。【参考方案2】:

您的 fetch 执行有两个 nil 来源。如果发生错误,executeFretchRequest 将返回 nil。如果数组为空,lastObject 将返回 nil。

这段代码没有什么特别的错误,但是如果你有问题,你应该总是捕获错误返回。这通常会告诉你问题的根源。

【讨论】:

我应该发布捕获错误的更新代码,但我确实这样做了,但我没有收到错误。 我知道 nil 可能来自哪里在谓词中。

以上是关于NSFetchRequest 在第一次运行时返回对象,但以后不返回的主要内容,如果未能解决你的问题,请参考以下文章

NSFetchRequest 中函数计数的表达式返回比常规 fetch 少 1

如何取消设置 NSFetchRequest 的 fetchLimit?

NSfetchRequest 啥都不返回

调用返回多个集合时的 ​​NSFetchRequest

NSFetchRequest 不读取更新的行 [关闭]

核心数据 NSFetchRequest 按类别排序方法返回值