NSFetchRequest ritorna corretto numero di oggetti, ma ogni oggetto contiene attributi nil

StackOverflow https://stackoverflow.com/questions/2406021

  •  18-09-2019
  •  | 
  •  

Domanda

Non riesco a capire perché questo sta accadendo. Posso aggiungere al contesto. Ma quando ho recuperare gli oggetti, restituisce il numero corretto di oggetti, ma gli attributi degli oggetti sono nulli.

Io sono l'aggiunta di 3 casi con questo codice:

+ (BOOL) addStoreWithID: (NSNumber *) ID Latitudine: (NSNumber *) Latitudine Longitudine: (NSNumber *) longitudine Nome: (NSString *) nome {

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;

} Ottengo il risultato: 2010-03-07 19: 19: 37,060 GamePouch_iPhone [11337: 207] nome Store è Starbucks (Gdb) continua 2010-03-07 19: 19: 37,933 GamePouch_iPhone [11337: 207] nome Store è Dunkin Donuts (Gdb) continua 2010-03-07 19: 19: 38,717 GamePouch_iPhone [11337: 207] nome Store è Krispy Kreme

mi hanno confermato che questo codice è visitato tre volte e nessuno degli attributi sono pari a zero.

Poi, quando provo a recuperarlo, io uso il seguente codice:

+ (*) 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;

}

ottengo il risultato: 2010-03-07 19: 21: 00,504 GamePouch_iPhone [11337: 207] nome deposito è (null) (Gdb) continua 2010-03-07 19: 21: 01,541 GamePouch_iPhone [11337: 207] nome deposito è (null) (Gdb) continua 2010-03-07 19: 21: 02,503 GamePouch_iPhone [11337: 207] nome deposito è (null)

Grazie mille per la lettura. Qualsiasi aiuto sarebbe molto apprezzato.

Grazie Bakhtiyar uddin

È stato utile?

Soluzione

vedo quale sia il problema: Per NSManagedObjects, dobbiamo usare valueForKey

avrei dovuto usare [TempStore valueForKey: @ "nome"] invece di [TempStore Nome]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top