2013-11-01 2 views
1

Я не знаю, почему Core Data не сохраняет мои атрибуты должным образом. Он сохраняет содержимое правильно, но он не будет выстраивать значения (у меня есть два столбца). Это дает мне 16 строк вместо 8, которые я хочу. Столбец «urls» должен быть выровнен с «album_names», а не нажат.Почему основные данные не правильно сохраняют атрибуты?

Скриншот SQLite файла из имитатора: http://imgur.com/tTOiqtf

TBAppDelegate.h файл:

@property(strong, retain) NSData *photoUrls 

TBAppDelegate.m Файл:

- (void)requestAlbums 
{ 
[FBRequestConnection startWithGraphPath:@"me/albums/" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    TBAppDelegate *delegate = (TBAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    managedObjectContext = [delegate managedObjectContext]; 

    if (error) 
    { 
    } 

    NSArray *collection = (NSArray *)[result data]; 

    for (int i=0; i < collection.count; i++) 
    { 
     NSData *album_names = [NSKeyedArchiver archivedDataWithRootObject:collection]; 

     Everything *everything = (Everything *)[NSEntityDescription insertNewObjectForEntityForName:@"Everything" inManagedObjectContext:managedObjectContext]; 

     everything.album_names = album_names; 

     NSArray *album = [collection objectAtIndex:i]; 

     NSString *photoQuery = [NSString stringWithFormat:@"%@/photos", [album valueForKey:@"id"]]; 

     [FBRequestConnection startWithGraphPath:photoQuery completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
     { 
      NSArray *photoResult = (NSArray *)[result data]; 

      self.photoUrls = [NSKeyedArchiver archivedDataWithRootObject:photoResult]; 

     }]; 

     Everything *urls = (Everything *)[NSEntityDescription insertNewObjectForEntityForName:@"Everything" inManagedObjectContext:managedObjectContext]; 

     urls.urls = self.photoUrls; 

     NSError *coreError; 

     if (![managedObjectContext save:&coreError]) 
     { 
      NSLog(@"%@", coreError); 
     } 
    } 

}]; 
} 
+0

Что вы подразумеваете под «line up» относительно Core Data? Это не имеет никакого отношения к вашему пользовательскому интерфейсу. –

ответ

0

Вы делаете 2 вставки (insertNewObjectForEntityForName:) в цикле for. Вместо того, чтобы вставлять новый объект, вы должны обновить его с помощью URL-адреса.

Сделайте снимок. Замените второй блок запроса на код ниже.

[FBRequestConnection startWithGraphPath:photoQuery completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    NSArray *photoResult = (NSArray *)[result data]; 

    self.photoUrls = [NSKeyedArchiver archivedDataWithRootObject:photoResult]; 
    everything.urls = self.photoUrls; 

    NSError *coreError; 

    // You can put the save somewhere else so that it doesn't get called 8 times in your case 
    if (![managedObjectContext save:&coreError]) 
    { 
     NSLog(@"%@", coreError); 
    } 
}]; 
Смежные вопросы