【发布时间】:2014-05-29 11:30:54
【问题描述】:
我正在使用此代码从 core data 获取数据
NSFetchRequest * desFetctRequest = [[NSFetchRequest alloc] init];
[desFetctRequest setEntity:[NSEntityDescription entityForName:@"IssueDescription" inManagedObjectContext:managedObjectContext]];
[desFetctRequest setIncludesPropertyValues:NO];
[desFetctRequest setPredicate:[NSPredicate predicateWithFormat:@"(issueId == %@) && (partyId == %@)",issueId, pid]];
NSError * error = nil;
NSArray * savedIssuesDes = [managedObjectContext executeFetchRequest:desFetctRequest error:&error];
但我得到 savedIssuesDes 数组和 0 个对象,但是如果我不使用预测,它会给我 savedIssuesDes 和 7 个对象。
我得到谓词的值为issueId == "42" AND partyId == "1"
我的谓词有问题吗?
但是我在其他项目中使用了 NSPredicate,得到了预期的结果。
编辑:这是我的IssueDescription 课程
@interface IssueDescription : NSManagedObject
@property (nonatomic, retain) NSString * desriptionId;
@property (nonatomic, retain) NSString * issueDesc;
@property (nonatomic, retain) NSString * issueId;
@property (nonatomic, retain) NSString * partyId;
@end
解决方案:正如大家所说,这里一切正常。partyId 在服务器端更改为party_id。我希望那个人在我面前。无论如何感谢大家的帮助。
【问题讨论】:
-
只是问一个显而易见的问题:您是否三次检查过是否存在具有给定 issueId/partyId 组合的对象?
-
您能在 xcdatamodel 中提供 IssueDescription 吗?
-
谓词看起来很好,我看不到明显的错误。也许存储的 issueId/partyId 包含一些前导或尾随空格或换行符? - 如果你获取所有对象(没有谓词)然后用谓词过滤结果 array 会发生什么?
标签: ios objective-c core-data nspredicate