NSFetchRequest retourne le nombre correct d'objets, mais chaque objet contient des attributs nil
-
18-09-2019 - |
Question
Je ne peux pas comprendre pourquoi ce qui se passe. Je peux ajouter au contexte. Mais lorsque je récupère les objets, il retourne le nombre correct d'objets, mais les attributs des objets sont nuls.
J'ajoute 3 cas avec ce code:
+ (BOOL) addStoreWithID: (NSNumber *) ID Latitude: (NSNumber *) Latitude Longitude: (NSNumber *) longitude Nom: (NSString *) Nom {
Stores *store = (Stores *)[NSEntityDescription
insertNewObjectForEntityForName:@"Stores"
inManagedObjectContext:[[SharedResources instance] managedObjectContext]];
store.ID = ID;
store.Latitude = latitude;
store.Longitude = longitude;
store.Name = name;
NSError *error;
if(![[[SharedResources instance] managedObjectContext] save:&error])
{
//Handle the error
return NO;
}
return YES;
} Je reçois le résultat: 2010-03-07 19: 19: 37,060 GamePouch_iPhone [11337: 207] nom de magasin est Starbucks (Gdb) continuer 2010-03-07 19: 19: 37,933 GamePouch_iPhone [11337: 207] nom de magasin est Dunkin Donuts (Gdb) continuer 2010-03-07 19: 19: 38,717 GamePouch_iPhone [11337: 207] nom de magasin est Krispy Kreme
Je confirme que ce code est visité trois fois et aucun des attributs sont nuls.
Alors lorsque je tente de le récupérer, j'utilise le code suivant:
+ (*) NSMutableArray fetchAllObjects {
NSFetchRequest *request;
request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stores" inManagedObjectContext:[[SharedResources instance] managedObjectContext]];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ID" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *array = [[[SharedResources instance] managedObjectContext] executeFetchRequest:request error:&error];
[request release];
[sortDescriptor release];
[sortDescriptors release];
for(int i=0;i<3;i++)
{
Stores *tempStore = (Stores *)[array objectAtIndex:i];
NSLog(@"store name is %@",[tempStore Name]);
}
return array;
}
Je reçois le résultat: 07/03/2010 19: 21: 00,504 GamePouch_iPhone [11337: 207] Nom du magasin est (null) (Gdb) continuer 07/03/2010 19: 21: 01,541 GamePouch_iPhone [11337: 207] Nom du magasin est (null) (Gdb) continuer 07/03/2010 19: 21: 02,503 GamePouch_iPhone [11337: 207] Nom du magasin est (null)
Merci beaucoup pour la lecture. Toute aide serait très appréciée.
Merci Bakhtiyar Uddin
La solution
Je vois ce que le problème est le suivant: Pour NSManagedObjects, nous devons utiliser valueForKey
Je aurais dû [TempStore valueForKey: @ "Nom"] au lieu de [TempStore Nom]