0

私のプロジェクトでは、コアデータを実装して、複数のエンティティの下にバルクデータを保存しました。エンティティの1つは「クーポン」であり、10近くの属性があります。1つはユーザー名です。アプリが開いたら、ログインした特定のユーザーに基づいてすべてのエントリを取得する必要があります。ユーザーが各エントリを入力すると、ユーザー名はコアデータにすでに保存されています。このための述語を設定するにはどうすればよいですか?私はコアデータの概念に不慣れです。これは私がエンティティクーポンの下ですべての結果を取得する方法です。

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]];

私が使用したことに注意してください、categoryそしてused、より低い頭文字で。これらはフェッチされる際のエンティティのプロパティであると想定しているため、慣例により、最初の文字は小さくする必要があります。

また、必要に応じて、実際に自分のバージョンを使用することもできますused == NO

于 2012-06-08T07:03:50.537 に答える