Lorsque je mets à jour iOS 4+ vers iOS 5, je perds toutes les données dans ma propre application. J'ai également mis à niveau vers OSX Lion et Xcode 4. J'ai sauvegardé mon iPhone dans iTunes et j'ai pu obtenir les données en utilisant iPhone Backup Extractor.Perte de données d'application de NSDocumentDirectory dans iOS 5
enregistrer mes données d'application dans un fichier de la manière suivante:
- (NSString *)iouArrayPath
{
// Standard way of getting file path for iOS
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
NSLog(@"Directory: %@", dir);
return pathInDocumentDirectory(@"IouTableArray.data");
}
- (void)archieveIou
{
NSLog(@"archieveIou");
// Get the path to the document directory
NSString *iouPath = [self iouArrayPath];
// grab the objects to archieve
NSMutableArray *iouTableArray = [iouViewController iouTableArray];
// ARCHIVE DATA
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:iouTableArray forKey:@"IouTableArray"];
[archiver finishEncoding];
[data writeToFile:iouPath atomically:YES];
if([data writeToFile:iouPath atomically:YES]) {
NSLog(@"writeToFile success!");
}
else {
NSLog(@"writeToFile failed");
}
[archiver release];
}
C'est ce que j'ai essayé de comprendre. J'ouvre le projet dans Xcode 4, je copie le fichier .data de la sauvegarde et le colle au /iPhone Simulator/5.0/Applications/Some digit/Documents
. Théoriquement, lorsque l'application démarre, elle recherche dans ce dossier et charge le fichier .data s'il existe. Ce ne est pas. Cependant, l'application fonctionnera correctement si je crée des données de test et que je les sauvegarde. Il va remplacer le fichier de sauvegarde avec le même nom de fichier et le charger correctement lorsque je redémarre l'application. Cela me fait me demander s'il y a un changement de NSCoder/archieving entre XCode3/XCode4 ou entre iOS4 et iOS5.
Est-ce que quelqu'un sait ce qui se passe? Une fois que j'ai compris cela, je prévois d'utiliser le fichier de données de sauvegarde et de le copier dans le dossier app/Document actuel. En fait, à y penser, je ne suis pas sûr de savoir comment faire ça non plus. Le dossier/Document de l'application se trouve dans le téléphone. Je vais devoir voir si je peux utiliser iTunes et injecter l'application avec les données. Quoi qu'il en soit, les premières choses d'abord! Comprendre le système
Merci!