7
votes

Uimanageddocument pas sauvegarde

J'utilise UimanageDDocument pour gérer mes données. Je crée le modèle et l'utiliser et tout semble fonctionner, mais mes modifications ne sont pas écrites dans le magasin SQLite.

La documentation pour UIManageDDocument dit que l'autosave devrait s'occuper de persister les données à la base de données. , mais cela ne semble pas se produire. p> xxx pré>

ceci récupère l'objet que je veux ajouter (et réussir). p>

- (void)addItemsObject:(MyItem *)value 
{
    NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
    [tempSet addObject:value];
    self.items = tempSet;
}


2 commentaires

Avec des instruments, je peux voir que les données sont écrites dans le cache de données de base. Mais cela ne se présente pas dans les données de base permet d'économiser de l'instrument, et si je tue et redémarre l'application, mes modifications ont disparu.


J'ai trouvé mon problème. Il s'avère que j'avais une erreur avec l'objet que j'essayais d'ajouter - j'ai manqué une propriété requise - et sans manuserrorror, rien n'indique qu'il y a un problème. Blogué à ce sujet ici: blog.stevex.net/2011/12/... < / a>


3 Réponses :


10
votes

2 commentaires

C'est une excellente trouvaille - le fait que la Coredata dans de nombreux cas permettra à des objets d'être persisté en mémoire, mais ne pas enregistrer sur le disque peut être extrêmement trompeur parfois, et le correctif que vous avez donné est génial.


Je pose une réponse qui résume votre lien en cas d'échec de la liaison future :)



1
votes

Dans ma méthode où je récupère des données du serveur, je crée d'abord les entités et, après cela, j'appelle ces deux méthodes pour enregistrer les modifications apportées au document immédiatement:

[self.document updateChangeCount:UIDocumentChangeDone];
[self.document savePresentedItemChangesWithCompletionHandler:^(NSError *errorOrNil) {
            ...
        }];


0 commentaires

1
votes

Touche Prends / Résumé de la liaison @ Stevex:

Assurez-vous d'appeler le -UPDaTechageCount de UimanageDDocument ou déclencher un changement enregistré auprès du document Undomanager . Sinon, le document ne pense pas que cela a besoin de sauver quoi que ce soit.

En outre, la sous-classement Certaines méthodes de clé vous permettront de voir lors de la transmission de l'automobilisation et du fait de faire des erreurs. xxx


0 commentaires