Чтобы сохранить начальное животное в зоопарке я это сделать:CoreData (MagicalRecord) возвращение неправильных значений
-(void)makePrimary:(Animal*)animal
Zoo *currentZoo = [Zoo findFirstByAttribute:@"zooId" withValue:self.currentZooId];
currentZoo.primaryAnimalId = animal.animalId;
[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];
DLog(@"primaryAnimalId: %d", currentZoo.primaryAnimalId.intValue); //logs "3"
}
После выполнения этого primaryAnimalId для currentZoo бревнах 3. Я использую менеджер Firefox SQLite для проверьте это. ZPRIMARYANIMALID тоже 3.
Теперь я перехожу в другой раздел приложения, где мне нужно отобразить первичное животное. Так что я делаю это:
-(Animal*)getPrimaryAnimalForCurrentZoo
{
Zoo *currentZoo = [Zoo findFirstByAttribute:@"zooId" withValue:self.currentZooId];
DLog(@"primaryAnimalId: %d", currentZoo.primaryAnimalId.intValue); //logs 2
Animal *primaryAnimal = [Animal MR_findFirstByAttribute:@"animalId" withValue:currentZoo.primaryAnimalId];
return primaryAnimal;
}
К моему огорчению, я получаю «2» для primaryAnimalId, и, таким образом, возвращается неправильное животное. «2» - это предыдущее значение животного, прежде чем я его изменю с помощью makePrimary:
. currentZooId равен 0 в обоих методах.
Что я не понимаю, так это то, как я могу получить неправильное значение из Core Data, когда я могу четко видеть правильное значение в настоящее время в базе данных (в SQLite Manager). Как это возможно и как я могу это исправить?
Да, оно имеет значение 0 в обоих методах. – soleil