Je suis en train d'écrire deux applications (iPhone et de bureau) pour réaliser ce qui a été décrit dans le lien suivant:Core Data quesition
core-data-is-it-possible-to-build-a-desktop-app-to-create-the-data-model-for-an
Ok. J'ai donc créé une application de bureau très simple avec une seule entité nommée Client avec un champ d'attribut de chaîne appelé nom. J'ai également généré la classe Model correspondante.
J'ai couru l'application a ajouté un couple de noms de clients à la liste et enregistré le fichier (comme Testing.sqlite).
Maintenant, dans mon application iphone équivalente, je tente de charger le fichier. J'ai d'abord généré l'application en utilisant l'un des modèles d'application et inclus les données de base. NB: J'ai mis en miroir l'entité Client et généré la classe Model correspondante.
Je suis allé dans ma classe et la méthode modifiée persistentStoreCoordinator « délégué application » pour faire référence à mon dossier « Testing.sqlite » à savoir
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Testing.sqlite"]];
J'ai aussi copié le fichier application de bureau enregistrée dans le prévu location ie
~/Library/Application Support/IPhone Simulator/User/... etc.
Donc maintenant en théorie, au moins chacune des deux applications devrait être la même. Cependant, lorsque j'essaie de charger les données à partir du, il semble toujours être vide. Mon code ressemble un peu à ceci:
// fetch the delegate.
TestingAppDelegate *app = (TestingAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [app managedObjectContext];
// construct the request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// execute the request.
NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
if (results == nil) {
// Handle the error.
NSLog(@"No data loaded");
}
NSLog(@"Returned: %@", results);
// finally release
[results release];
[request release];
Je n'arrive pas à comprendre ce qui ne va pas. Tous les conseils ou suggestions seraient totalement appréciés.
Lorsque j'ai regardé l'instance de persistanceStoreCoordinator, managedObjectContext, tableau résultant (NSArray) lors du débogage, je peux voir qu'il semble contenir 0 enregistrements pour tous ces éléments. Donc je suis confus.
NB: Le fichier Testing.sqlite contient des entrées.
Merci à l'avance, Matt
Merci pour ce code! Très utile. Cependant, je ne sais toujours pas ce que vous entendez par "répliquer complètement le magasin persistant"? Mon fichier xcdatamodel et les classes associées dans mon application iphone sont les mêmes que mon application mac. Quelles sont les autres étapes à suivre? – Sway
Il s'est avéré qu'ils étaient subtilement différents. Après correction de cela, cela a fonctionné un régal. Merci encore pour votre aide. – Sway