【发布时间】:2016-04-08 03:27:00
【问题描述】:
假设 Sqlite 支持两个 ManagedObject:
1.) 一个User,它有两个属性firstname 和lastname,以及一个只读的虚拟(瞬态)属性fullname。
@interface User : NSManagedObject
...
@property NSString *firstname;
@property NSString *lastname;
@property (readonly) NSString *fullname;
@end
@implementation User
...
- (NSString*)fullname
{
return [NSString stringWithFormat:@"%@ %@", self.firstname, self.lastname];
}
@end
2.) 一个Message,除了其他几个属性外,它还与存储在sender 属性中的一个用户有关系。
@interface Message : NSManagedObject
@property User *sender;
@end
我想获取具有某个发件人全名的所有 Message 实例。这是我正在构建的 NSPredicate:
[NSPredicate predicateWithFormat:@"sender.fullname CONTAINS[cd] %@", @"Searched Name"]]
不幸的是,我一开始搜索就会收到NSInvalidArgumentException:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (sender.fullname CONTAINS[cd] "S")'
【问题讨论】:
-
您可能想查看我们书中关于搜索文本的章节:objc.io/books/core-data — 它讨论了如何使字符串搜索可靠且快速地工作。 Unicode 很棘手。这是一篇涉及其中一些内容的文章:objc.io/issues/9-strings/unicode
标签: ios objective-c core-data nspredicate