objective-c – 实体不是密钥的密钥值编码兼容

objective-c – 实体不是密钥的密钥值编码兼容,第1张

概述if (win) { // Game was won, set completed in puzzle and time // Calculate seconds taken int timeTaken = (int)([NSDate timeIntervalSinceReferenceDate] - self.gameStartTime); int bestTim
if (win) {    // Game was won,set completed in puzzle and time    // Calculate seconds taken    int tiMetaken = (int)([NSDate timeIntervalSinceReferenceDate] - self.gameStartTime);    int bestTime = [[self.puzzle valueForKey:@"bestTime"] intValue];    if (tiMetaken < bestTime && bestTime != 0) {        [self.puzzle setValue:[NSNumber numberWithInt:tiMetaken] forKey:@"bestTime"];        NSLog(@"Best time for %@ is %@",[self.puzzle valueForKey:@"name"],[self.puzzle valueForKey:@"bestTime"]);    }}

这是我正在制作的iPad游戏中的一些代码,我使用Core Data来存储关卡.当一个关卡完成并获胜后,我想为该关卡设置最佳时间.计算所花费的时间,如果它比之前的最佳时间更好,我想将其设置为该级别的最佳时间.

当这个代码尝试从self.puzzle(Core Data中的NSManagedobject)中检索最佳时间时,此代码在’int bestTime’行上失败.最佳时间存储为Core Data模型中的Integer 32.它因SIGABRT错误而失败.

'[<NSManagedobject 0x95334d0> valueForUndefinedKey:]: the entity Puzzle is not key value Coding-compliant for the key "bestTime".'

我在网上搜索了为什么会发生这种情况以及如何解决它的原因,但似乎没有任何帮助.在其他地方我从Core Data模型访问Integer值并且它们完美地工作,尽管它们用于过滤和排序查询.

我也不知道我设置值的行是否有效.

任何有关这方面的帮助将不胜感激.

编辑:这是获取一系列谜题的代码,其中一个被认为是上面的谜题.

// define our table/entity to use  NSEntityDescription *entity = [NSEntityDescription entityForname:@"Puzzle" inManagedobjectContext:managedobjectContext];   // Setup the fetch request  NSFetchRequest *request = [[NSFetchRequest alloc] init];  [request setEntity:entity];   // Set the filter for just the difficulty we wantnspredicate *predicate = [nspredicate predicateWithFormat:@"difficulty == %d",difficulty];[request setPredicate:predicate];// define how we will sort the records  NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortID" ascending:YES];  NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];  [request setSortDescriptors:sortDescriptors];  [sortDescriptor release];// Fetch the records and handle an error  NSError *error;  NSMutableArray *mutableFetchResults = [[managedobjectContext executeFetchRequest:request error:&error] mutablecopy];
解决方法 好的,首先,我要感谢所有提出想法的人.他们可能没有帮助我解决问题,但我学到了更多关于核心数据的知识,当事情不起作用时,找出我应该检查的内容总是好的.

我真的不知道问题是什么.直到今天早上,我认为Xcode打开了大约5天,昨天我将属性“bestTime”添加到数据模型中.我只能假设在5天内,Xcode变得有点不稳定,并认为它没有被保存.我已经检查过我已经保存了模型属性,事实上我必须检查3到4次以及我做出任何更改后按命令S的习惯.

无论如何,我今天早些时候重新启动了我的机器,当我几分钟前启动Xcode时,我意识到’bestTime’不在模型文件中.我添加了它,重置iPad模拟器上的设置,它工作.

再次感谢大家的帮助,对不起解决方案不是更有趣和基于代码.虽然这让我感觉更好,但我的代码不是原因.

总结

以上是内存溢出为你收集整理的objective-c – 实体不是密钥的密钥值编码兼容全部内容,希望文章能够帮你解决objective-c – 实体不是密钥的密钥值编码兼容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1034333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存