首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreData:具有to-多关系的NSPredicate

CoreData:具有to-多关系的NSPredicate
EN

Stack Overflow用户
提问于 2014-05-12 18:42:51
回答 2查看 147关注 0票数 1

请帮我提出正确的取货请求。我想获取所有请求,其中rates.identRater!=“有名无实”,我尝试使用谓词:

1

代码语言:javascript
复制
[NSPredicate predicateWithFormat:@"!(ANY rates.identRater == %@)", identRater]

2

代码语言:javascript
复制
[NSPredicate predicateWithFormat:@"NONE rates.identRater == %@", identRater]

3.

代码语言:javascript
复制
[NSPredicate predicateWithFormat:@"!(%@ IN rates.identRater)", identRater]

请求属性

代码语言:javascript
复制
@property (nonatomic, retain) NSString * additionalInfo;
@property (nonatomic, retain) NSNumber * duplicate;
@property (nonatomic, retain) NSDecimalNumber * date;
@property (nonatomic, retain) NSDecimalNumber * dateAccept;
@property (nonatomic, retain) NSDecimalNumber * dateCreate;
@property (nonatomic, retain) NSDecimalNumber * dateChanged;
@property (nonatomic, retain) NSDecimalNumber * dateOfSale;
@property (nonatomic, retain) NSString * fio;
@property (nonatomic, retain) NSString * ident;
@property (nonatomic, retain) NSString * identChanger;
@property (nonatomic, retain) NSString * identOwner;
@property (nonatomic, retain) NSString * identSelectedRate;
@property (nonatomic, retain) NSString * phone;
@property (nonatomic, retain) NSString * status;
@property (nonatomic, retain) Rates *selectedRate;
@property (nonatomic, retain) RequestCar *car;
@property (nonatomic, retain) RequestExterior *exterior;
@property (nonatomic, retain) RequestBundling *bundling;
@property (nonatomic, retain) RequestInterior *interior;
@property (nonatomic, retain) RequestNewCar *theNewCar;
@property (nonatomic, retain) RequestTestdrive *testDrive;
@property (nonatomic, retain) RequestFinalRate *finalRate;
@property (nonatomic, retain) Users *owner;
@property (nonatomic, retain) NSSet *viewedToRate;
@property (nonatomic, retain) NSSet *hiddenToRate;
@property (nonatomic, retain) NSSet *photos;
@property (nonatomic, retain) NSSet *diagnosticPhotos;
@property (nonatomic, retain) NSSet *rates;

差饷性质

代码语言:javascript
复制
@property (nonatomic, retain) NSDecimalNumber * cost;
@property (nonatomic, retain) NSDecimalNumber * costOfSale;
@property (nonatomic, retain) NSString * securityComment;
@property (nonatomic, retain) NSDecimalNumber * dateChanged;
@property (nonatomic, retain) NSString * ident;
@property (nonatomic, retain) NSString * identManager;
@property (nonatomic, retain) NSString * identRater;
@property (nonatomic, retain) NSString * identRequest;
@property (nonatomic, retain) NSDecimalNumber * date;
@property (nonatomic, retain) Requests *request;
@property (nonatomic, retain) Users *rater;
@property (nonatomic, retain) ViewedToRateRequests *viewed;
@property (nonatomic, retain) HiddenToRateRequests *hidden;
@property (nonatomic, retain) Requests *selectedInRequest;

去取

代码语言:javascript
复制
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"Requests" inManagedObjectContext:moc]];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"!(ANY rates.identRater == %@)", @"someIdent"]];
[fetch setSortDescriptors:@[[[NSSortDescriptor alloc] initWithKey:@"dateChanged" ascending:YES]]];

如果我使用上面列出的任何谓词,CoreData返回0行。但我想看一排..。

拜托,帮帮我..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-12 19:46:19

这应该是可行的:

代码语言:javascript
复制
[NSPredicate predicateWithFormat:@"SUBQUERY(rates, $r, $r.identRater == %@).@count == 0", identRater]

其他选项似乎不能正常工作,因此子查询是唯一的解决方案:Core Data NSPredicate with to-Many Relationship

票数 1
EN

Stack Overflow用户

发布于 2014-05-12 19:18:28

你走在正确的轨道上。需要调整的是字符串比较操作符。我认为你的第二个想法是最直接的方式来表明你的意图。

代码语言:javascript
复制
[NSPredicate predicateWithFormat:@"NONE rates.identRater LIKE %@", identRater];

(我还没测试过这个)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23616463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档