Основные данные хранят только последний объект фида JSON - PullRequest
1 голос
/ 22 июня 2011

Я использую Core Data в качестве локального хранилища в моем приложении.Я настроил его правильно и сделал подклассы NSManagedObject для каждой сущности.Однако, когда я пытаюсь вставить значения в мое хранилище, он вставляет только последний объект из моего фида JSON.

res = [JSONHandler requestJSONResponse:jsonString];
shows = [res valueForKeyPath:@"Show.Name"];
NSUInteger showIndex = 0;
for(NSString *showName in shows){
    showObject = [NSEntityDescription insertNewObjectForEntityForName:@"Show" inManagedObjectContext:managedObjectContext_];
    showObject.name = showName;
    showObject.iD = [[res valueForKeyPath:@"Show.Id"]objectAtIndex:showIndex];
    showObject.desc = [[res valueForKeyPath:@"Show.Description"]objectAtIndex:showIndex];
    showObject.activityType = [[res valueForKeyPath:@"Show.ActivityType"]objectAtIndex:showIndex];

    showIndex++;
}

Это сохраняет только последний объект из моего фида JSON.Любая идея, почему?

РЕДАКТИРОВАТЬ: Когда я делаю это работает нормально:

res = [JSONHandler requestJSONResponse:jsonString];

shows = [res valueForKeyPath:@"Show.Name"];

NSUInteger index = 0;

for(NSString *showName in shows){
    show = [NSEntityDescription insertNewObjectForEntityForName:@"Show" inManagedObjectContext:managedObjectContext_];
    [show setValue:showName forKey:@"name"];
    [show setValue:[[res valueForKeyPath:@"Show.Id"]objectAtIndex:index] forKey:@"iD"];
    [show setValue:[[res valueForKeyPath:@"Show.Description"]objectAtIndex:index] forKey:@"desc"];
    [show setValue:[[res valueForKeyPath:@"Show.ActivityType"]objectAtIndex:index] forKey:@"activityType"];

    index++;
}

Это в основном то же самое, не так ли?Но я хочу использовать подклассы NSManagedObject вместо того, чтобы делать, как я делал выше.Потому что в приведенном выше фрагменте show вместо NSManagedObject * show вместо того, что должно быть: Show * show.

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Обычно, когда вы видите только один из нескольких объектов, сохраняемых таким образом, проблема заключается в том, что отношение, которое должно быть ко многим, неправильно установлено как к одному.Независимо от того, сколько объектов вы пытаетесь добавить в отношение, устанавливается только последний, потому что отношение может содержать только одно значение.

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

0 голосов
/ 22 июня 2011

Сколько там шоу?Вы можете найти это, выполнив: NSLog(@"Number of shows: %d.", shows.count);, предполагая, что шоу является NSArray.Может случиться так, что ваш код основных данных в порядке, а сам синтаксический анализ JSON является ошибкой.

РЕДАКТИРОВАТЬ: Кроме того, вы правильно сохраняете изменения в постоянном хранилище?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...