1

我正在尝试使用谓词从 CoreData 实体名称 Person 中获取值,然后与字典中的新数据进行比较。但它每次返回 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,它不使用 if 和不比较。在我的实体中,我有 Person 和 Photo 实体。在 Person 中,我有 userName 和 userID 属性以及与 Photo 实体的一对多关系。

我认为谓词有问题,但我无法弄清楚。

4

1 回答 1

0

嗨,我解决了我的问题,在我的 etchManagedObjectsForEntity 声明中我使用了 user 而不是 userName 。))

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