1

RestKit を使用して、特定の Web URL からオブジェクトをロードしています。マッピングを行い、tableView に表示します。わかりました、それは動作します。しかし、インターネットに接続していないときは、最後に読み込まれたオブジェクトのコンテンツが読み込まれます。奇妙なのは:

最後にロードされたオブジェクトを実際にロードするわけではありません。オブジェクト「1」をロードし、アプリケーションを閉じ、再度実行してオブジェクト「2」をロードしてから再度閉じ、接続をオフにして実行すると、オブジェクト 1 のコンテンツが表示されます。コンテキストをクリーンアップしてオブジェクト「2」、次に「1」をロードし、接続をオフにして実行しても、オブジェクト「1」のコンテンツが再び表示されます! オブジェクト「1」にはある種の「優先度」があるようです。

私がやっていること:

- (void)dataDownload
{
    [self showLoading:YES];
    RKObjectManager* objectManager = [RKObjectManager sharedManager];
    [objectManager loadObjectsAtResourcePath:@"my-url" delegate:self block:^(RKObjectLoader* loader) {
        loader.objectMapping = [objectManager.mappingProvider objectMappingForClass:[Conteudo class]];
    }];

}

- (void) loadDatabase
{
    NSFetchRequest* request = [Conteudo fetchRequest];
    NSSortDescriptor* descriptor = [NSSortDescriptor sortDescriptorWithKey:@"createdAt" ascending:NO];
    [request setSortDescriptors:[NSArray arrayWithObject:descriptor]];
    self.conteudo = [Conteudo organizeData:[Conteudo objectsWithFetchRequest:request]];

}

`

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
        [self showLoading:NO];
        [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastUpdatedAt"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSArray *result = objects;
        if(result != nil){
            self.conteudo = [Conteudo organizeData:result];
            [[NSManagedObject managedObjectContext] save:nil];
        }
        else 
            [self loadDatabase];
        [self.tableView reloadData];
    }

`

助けてくれてありがとう=]

4

0 に答える 0