1

CoreDataエンティティ名Personwithpredicateから値を取得し、辞書内の新しいデータと比較しようとしていますが、0ごとに返されます。同じ名前で約5人が作成されます。

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName == %@",[flickr usernameForUserID:@"owner"]];
    peopleList =  (NSMutableArray *)[flickr fetchManagedObjectsForEntity:@"Person" withPredicate:predicate];

        NSEnumerator *enumerator = [peopleList objectEnumerator];

        Person *person;

        BOOL exists = FALSE;

        while (person = [enumerator nextObject]) {
            NSLog(@" Person is: %@ ", person.userName);
            NSLog(@"Person ID IS %@",person.userID);
            NSLog(@"Dict ID is %@",[dict objectForKey:@"owner"]);
            if([person.userID  isEqualToString:[dict objectForKey:@"owner"]]) {
                exists = TRUE;
                NSLog(@"-- Person Exists : %@--", person.userName);
                [newPhoto setPerson:person];
            }

        }

ここで、peopleListは0を返し、列挙子も0を返し、比較しない場合は使用しません。私のエンティティには、PersonエンティティとPhotoエンティティがあります。Personには、userName属性とuserID属性があり、Photoエンティティとの1対多の関係もあります。

述語に問題があると思いますが、わかりません。

4

1 に答える 1

0

こんにちは私は私の問題を修正しました、私のetchManagedObjectsForEntity宣言で私はuserNameの代わりにuserを使用しました。))

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"userName" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
于 2010-04-12T20:08:01.887 に答える