6

我有一组包含 personIDs 的字符串,并且我有一个 NSFetchedResults 的人 managedObjects 具有唯一的 strPersonIDs。我试图创建一个 NSPredicate 但它失败了。对此的任何帮助将不胜感激。我对 NSPredicate 有点陌生,所以请善待。

NSSet *zipSet = [NSSet setWithSet:[self getziplist:searchText]];
searchString = [NSString stringWithFormat:@"(strPersonID IN %@)",zipSet];
NSPredicate *searchPersonPredicate = [NSPredicate predicateWithFormat:searchString];

运行时错误消息是:Terminating app due to uncaught exception 'NSInvalidArgumentException',原因:'Unable to parse the format string "(strPersonID IN {( 300040, 300082, 412218 )})"'

4

1 回答 1

7

不要插入zipSet字符串,将其插入谓词:

NSSet *zipSet = [NSSet setWithSet:[self getziplist:searchText]];
NSPredicate *searchPersonPredicate = [NSPredicate predicateWithFormat:@"strPersonID IN %@",zipSet];

如果将 NSSet 插入到字符串中,它的格式将不正确(NSString 使用-description,它使用旧的 NextStep属性列表格式)。

于 2010-12-11T18:02:33.093 回答