Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 返回空对象数组的核心数据NSSet_Iphone_Ios_Ipad_Core Data - Fatal编程技术网

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

Iphone 返回空对象数组的核心数据NSSet,iphone,ios,ipad,core-data,Iphone,Ios,Ipad,Core Data,更新:在我实现玩家之前,我在没有玩家的游戏数据库中有幽灵条目。它返回的是那些条目,而不是更新型号的最新条目 我正在努力使一个核心数据数据库正常工作,但在人际关系方面遇到了一些问题。我对整件事都很陌生,所以不要把任何事情放在我身后,我甚至可能不了解基本情况。但我们还是走了 这是我创建新游戏实体的地方。玩家与选定并存储在一个数组中的多个玩家实体之间存在to-may关系 Game *newGame = [NSEntityDescription insertNewObjectForEntityF

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

我正在努力使一个核心数据数据库正常工作,但在人际关系方面遇到了一些问题。我对整件事都很陌生,所以不要把任何事情放在我身后,我甚至可能不了解基本情况。但我们还是走了

这是我创建新游戏实体的地方。玩家与选定并存储在一个数组中的多个玩家实体之间存在to-may关系

    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=[NSFetchRequestFetchRequestWithEntityName:@“游戏”]; [RequestSavedName 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: ( )
玩家集:托管对象(0xd023b70)上的关系“玩家”错误(实体:游戏;id:0xd023180;数据:{
卡片=;
currentPlayer=0;
日期=“2012-03-27 18:20:07+0000”;
游戏类型=多回音;
玩家=”;
})
玩家:()

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

我建议你对任何键使用valueForKey


在核心数据中,故障不是错误,它意味着您试图从不存在的核心数据访问。我想说的是,您应该使用来指定提取应该返回哪些属性。

表示它是错误的消息并不意味着它是空的。这仅仅意味着数据尚未从数据库加载。如果你像平常一样访问它,你应该在那里看到你的数据。试试这个,看看它是怎么说的:

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

阅读此处的故障信息:

您到底在说什么?比如在[game.players valueForKey:@“name”]上?或者诸如此类的?我在说,我怀疑你的游戏是否有玩家:我认为你是对的。那么,当我设置播放器时,我的存储语句有什么问题。。。我设置的NSSet不是空的。为什么核心数据不保存或抛出错误?你得到答案是因为你对我的游戏没有玩家的评论让我思考lol。非常感谢!哈哈哈@RyanPoolos一点问题都没有。它返回null。所以我想我没有球员。。。那么,我的存储语句有什么问题,即玩家正在被存储?我调用setPlayers并从和数组中传入NSSet…@lnafziger这就是我所说的,这不是错误。它只是游戏没有任何玩家,试图获取不存在的玩家。设置玩家后,是否保存上下文?是的,我保存。至少我认为我是lol。我正在managedObjectContext上调用save:&error。您可以查看上面的第一个代码块,然后查看。这是倒数第二行。请仔细检查
playersSet
是否包含所需的对象。i、 e.就在
[newGame setPlayers:playersSet]之前尝试
NSLog(@“%i”,[playersSet count])