核心数据NSSet返回空的对象数组



更新:在实现players之前,我在没有玩家的游戏数据库中有重影条目。它返回的是那些条目,而不是更新型号的最新条目

我正在努力让核心数据数据库正常工作,但在关系方面遇到了一些问题。我对这整件事很陌生,所以不要把任何事情抛在脑后——我可能根本不懂。但我们还是来了。

这就是我创建新游戏实体的地方。"玩家"是与选定并存储在阵列中的几个玩家实体之间的关系。

    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: ( )

我不明白为什么玩家是一个完整的数组,然后当它进入时是一个全集,但当它出来时,[set allobjects]返回一个空数组。。。

我建议您对任何键使用valueForKey

在核心数据故障不是一个错误,它意味着你试图从不存在的核心数据访问。我认为您应该使用setPropertiesToFetch,它指定了fetch应该返回哪些属性。

说这是一个错误的消息并不意味着它是空的。这只是意味着数据尚未从数据库中加载。如果你像往常一样访问它,你应该在那里看到你的数据。试试这个,看看上面写着什么:

NSLog(@"Players count: %i", [game.players count]);

点击此处阅读有关故障的信息:核心数据编程指南-故障和统一

最新更新