UPDATE: У меня были записи призраков в моей базе данных игр без игроков, прежде чем я реализовал игроков вообще. Он возвращал эти записи не последним записям с обновленной модельюОсновные данные NSSet возвращает пустой массив объектов
Я работаю над тем, чтобы работать с базой данных Core Data и иметь проблемы с отношениями. Я очень новичок во всем этом, поэтому ничего не ставьте мимо меня, я даже не могу понять основы. Но здесь мы все равно идем.
Здесь я создаю новое игровое устройство. Игроки являются зависимыми отношениями с несколькими объектами Player, которые были выбраны и сохранены в массиве.
Game *newGame = [NSEntityDescription insertNewObjectForEntityForName:@"Game" inManagedObjectContext:[SDDataManager dataManager].managedObjectContext];
[newGame setGameType:@"multipleChoice"];
[newGame setDate:[NSDate date]];
NSSet *playersSet = [NSSet setWithArray:players];
[newGame setPlayers:playersSet];
[newGame setCards:[NSKeyedArchiver archivedDataWithRootObject:selectedCards]];
NSError *error;
[[SDDataManager dataManager].managedObjectContext save:&error];
NSLog(@"New Game Error: %@",[error localizedDescription]);
Проблема заключается в том, что, когда я называю его из базы данных, как это:
NSFetchRequest * requestSavedGame = [NSFetchRequest fetchRequestWithEntityName: @ "Game"]; [requestSavedGame setFetchLimit: 1];
NSError *error;
NSArray *loadedGame = [[SDDataManager dataManager].managedObjectContext executeFetchRequest:requestSavedGame error:&error];
NSLog(@"Load Game Error: %@",[error localizedDescription]);
Game *game = [loadedGame objectAtIndex:0];
NSLog(@"Players Set: %@",game.players);
NSLog(@"Players: %@",[game.players allObjects]);
Игроки: пусто ??? Он возвращает это точно:
Players Set: Relationship 'players' fault on managed object (0xd023b70) <Game: 0xd023b70> (entity: Game; id: 0xd023180 <x-coredata://E6A82377-31D2-4D11-B890-B3FDC5A03E0E/Game/p1> ; data: {
cards = <62706c69 73743030 d4010203 0405086e 6f542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572>;
currentPlayer = 0;
date = "2012-03-27 18:20:07 +0000";
gameType = multipleChoice;
players = "<relationship fault: 0xd01fd60 'players'>";
})
Players: ()
Я не имею ни малейшего представления, почему игроки с полным массивом, то полный набор, когда он идет в России, но когда он выходит [Установить AllObjects] возвращает пустой массив ...
Где именно вы говорите? Как на [game.players valueForKey: @ "name"]? или что-то типа того? –
Я говорю, и у меня есть сомнения, есть ли в вашей игре игроки: P –
Я думаю, что вы правы. Так что же не так с моим заявлением сохранения, тогда когда я устанавливаюPlayers ... NSSet, который я установил, не пуст. почему isnt Core Data сохраняет его или бросает ошибку? –