私のアプリでは、CoreData スタックに MagicalRecord を使用していますが、NSManagedObject の動作がおかしいです。DB から Stuff エンティティのすべてのエントリを取得する DB クラスにこのメソッドがあります。このメソッドを別のクラスから呼び出しています。この getStuff メソッド内で、以下のログ ステートメントに出力される正しい値を取得しています。
-(NSArray*) getStuff
{
NSManagedObjectContext * managedObjectContext = [NSManagedObjectContext MR_contextWithStoreCoordinator:self.psc];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Stuff"];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"idNumber" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObjects:sort, nil]];
NSError *error = nil;
NSArray *arr = [managedObjectContext executeFetchRequest:request error:&error];
for (Stuff *stuff in arr) {
NSLog(@"stuff fN: %@",stuff.idNumber);
}
if (arr)
return arr;
return [NSArray array];
}
ただし、このメソッドによって別のクラスに返される配列には、null 値を持つこれらすべてのオブジェクトが含まれています。
// -- some othe class
// call DB to check if we have stuff there
NSArray* stuff = [database getStuff];
for (Stuff *stuff in stuff) {
NSLog(@"stuff fN: %@",stuff.idNumber);
}
なぜこれが起こっているのか誰かが知っていますか?! どんな種類の助けも大歓迎です!