【发布时间】:2011-09-05 03:13:24
【问题描述】:
我正在尝试从不在给定集中的核心数据中获取对象,但我无法让它工作。
例如,假设我们有一个名为 User 的核心数据实体,它具有一些属性,例如 userName、familyName、givenName 和 active。给定一个代表一组用户名的字符串数组,我们可以轻松获取与该用户名列表对应的所有用户:
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
inManagedObjectContext:moc];
[request setEntity:entity];
NSArray *userNames = [NSArray arrayWithObjects:@"user1", @"user2", @"user3", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName IN %@", userNames];
[request setPredicate:predicate];
NSArray *users = [moc executeFetchRequest:request error:nil];
但是,我想获取该集合的补集,即,我想要核心数据中没有在 userNames 数组中指定的用户名的所有用户。有谁知道如何解决这个问题?我认为在谓词(i.e., "userName NOT IN %@") 中添加"NOT" 会很简单,但是Xcode 抛出一个异常,说无法解析谓词格式。我还尝试使用可用于获取请求的谓词构建器,但没有成功。该文档也不是特别有用。建议?注释?感谢您的所有帮助:)
【问题讨论】:
标签: iphone objective-c core-data nspredicate