0

在我的项目中,我实现了核心数据以将批量数据保存在多个实体下。实体之一是“优惠券”,它有近 10 个属性。一是用户名。当应用程序打开时,我需要根据登录的特定用户获取所有条目。当用户输入每个条目时,用户名已经保存到核心数据中。如何为此设置谓词?我是核心数据概念的新手。这就是我在实体优惠券下获取所有结果的方式。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"Category BEGINSWITH[c] @"All" and Used == NO"];
[request setPredicate: pred];

NSArray *objects = [context  executeFetchRequest:request error:&error];
NSLog(@"%@arry",objects);

if ([objects count]>0) {
    [self.couponList addObjectsFromArray:objects];
}

[request release];

任何帮助或建议将不胜感激。在此先感谢!

4

1 回答 1

1

您的谓词语法错误。您需要将参数替换为格式字符串。

此外,您的谓词似乎与用户名无关。为什么?

[NSPredicate predicateWithFormat:@"username = %@", userName]; 
// or, including your existing predicate:
[NSPredicate predicateWithFormat:@"username = %@ && 
                                   category BEGINSWITH[c] %@ && 
                                   used == %@",
   userName, @"All", [NSNumber numberWithBool:NO]];

请注意,我使用了categoryused较低的首字母。我假设这些是您的实体在获取时的属性,因此按照惯例,第一个字母应该很小。

used == NO此外,如果您愿意,您实际上也可以使用您的版本。

于 2012-06-08T07:03:50.537 回答