2015-10-14 2 views
0

У меня проблема в моем тестовом приложении с использованием iCloud Core Data. Конкретная проблема возникает, когда затрагивается частичная запись в виде таблицы, которая запускает полную запись таблицы, которая будет отображаться на полноэкранном режиме. Вид стандартного вида таблицы.Основные данные iCloud fetch иногда не дает данных (iOS)

В ячейке представления таблицы содержится уникальный идентификатор записи, который передается в виде подробного отображения. При запуске представления контроллер просмотра получает данные полной записи и рисует их на экране.

Вот код, который используется, чтобы сделать это:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSString *temp_text; 
    Item *fetchSelectedItem; 
    NSString *updateUniqueID; 
    NSArray *tempFetchedObjects; 
    NSError *error; 
    int stopper; 

    localFindItDataController = [[FindItDataController alloc] init]; 

    NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Item" inManagedObjectContext: localFindItDataController.managedObjectContext]; 
    [fetch setEntity:entityDescription]; 
    updateUniqueID = [localItem.itemUniqueID stringValue]; 
    [fetch setPredicate:[NSPredicate predicateWithFormat:@"(ANY itemUniqueID = %@)",updateUniqueID]]; 

    tempFetchedObjects = [localFindItDataController.managedObjectContext executeFetchRequest:fetch error:&error]; 
    NSLog(@"did the fetch work %@ %lu", updateUniqueID, (unsigned long)[tempFetchedObjects count]); 
    if ([tempFetchedObjects count] == 0) { 
     stopper = 1;} 

    fetchSelectedItem = [tempFetchedObjects objectAtIndex:0]; 
    NSLog(@"only executes if fetch was ok"); 
    localItem = fetchSelectedItem; 

    temp_text = localItem.itemName; 
    contentsWhatBox.text = temp_text; 
    temp_text = localItem.itemLocation; 
    contentsWhereBox.text = temp_text; 
    temp_text = localItem.itemDescription; 
    contentsOtherInfoBox.text = temp_text; 

    UIImage *tempImage = [UIImage imageWithData:localItem.itemPicture]; 
    CGImageRef imageRef = [self CGImageRotatedByAngle:[tempImage CGImage] angle:270]; 
    UIImage* img = [UIImage imageWithCGImage: imageRef]; 
    contentsImageBox.image = img; 

    tapImage = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageGesture)]; 

    [contentsImageBox setUserInteractionEnabled:YES]; 

    [contentsImageBox addGestureRecognizer:tapImage]; 

} 

В основном это работает просто отлично, но иногда выборки приходит пустым, хотя определенно есть данные, что соответствует предикат выборки. Иногда я могу нажимать на запись в виде таблицы, видеть, как она появляется, переходить туда и обратно несколько раз между записями табличного представления, возвращаться к исходной записи и сбой извлечения.

Я нахожусь в убытке, и любая помощь будет приветствоваться. Заранее спасибо.

Edit # 1:

Это объект, который является неправдоподобным. Может имеет значения, так что я добавил его в дальнейшем:

@interface Item : NSManagedObject { 
} 

@property (nonatomic, retain) NSString * itemName; 
@property (nonatomic, retain) NSString * itemLocation; 
@property (nonatomic, retain) NSString * itemDescription; 
@property (nonatomic, retain) NSData * itemPicture; 
@property (nonatomic, retain) NSNumber * itemUniqueID; 
@property (nonatomic, retain) NSNumber * itemNumber1; 
@property (nonatomic, retain) NSNumber * itemNumber2; 
@property (nonatomic, retain) NSString * itemAttribute1; 
@property (nonatomic, retain) NSString * itemAttribute2; 
@property (nonatomic, retain) NSString * itemAttribute3; 
@property (nonatomic, retain) NSString * itemTimestamp; 


@end 

Edit # 2:

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

Edit # 3:

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

ответ

0

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