Objective-C: проблема fetchManagedObjectsForEntity - PullRequest
1 голос
/ 12 апреля 2010

Я пытаюсь получить значение из имени сущности 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 .

Я думаю, что проблема в предикате, но я не могу понять это.

1 Ответ

0 голосов
/ 13 апреля 2010

Привет, я исправил свою проблему, в своем объявлении etchManagedObjectsForEntity я использовал user вместо userName.))

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"userName" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
...