- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑感谢马特的帖子,我现在明白我不应该尝试将“started”作为数组访问。但是,如果是这样的话,我想知道为什么这段代码似乎在其他地方工作。在我看来,这应该是“一个或另一个”。它应该起作用,或者不应该起作用。
原创我在代码的各个部分使用相同的获取请求来查找最新的游戏:
Game *lastGame = [[[CoreDataAccess managedObjectContext] fetchObjectsForEntityName:@"Game" withPredicate:@"started == started.@max"] anyObject];
“Game”是一个 NSManagedObject,“started”是一个日期属性。 'started' 在 awakeFromInsert 中为每个对象设置一次。此后就再也没有改变过。游戏永远不会直接实例化,但它具有三个子类。我尝试过让 Game 变得抽象和具体,但都对这个问题没有任何效果。
我正在使用 NSManagedObjectContext 类别来执行获取,如 cocoa with love 上所示 http://cocoawithlove.com/2008/03/core-data-one-line-fetch.html 。
我收到的错误如下:
Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. [<__NSDate 0xebb1130> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @max. with userInfo {
NSTargetObjectUserInfoKey = "2010-11-06 11:16:53 GMT";
NSUnknownUserInfoKey = "@max";
}
在我看来,谓词可能试图将 @max 应用于单个 NSDate,而不是所有游戏中的所有“开始”属性。但我不确定。我不太擅长谓词,我花了很多时间尝试和犯错才做出这个。不过,我不明白完全相同的获取如何在不同的地方出现错误。
提取不是 NSFetchedResultsController 的一部分,但我在收到错误的类中使用了 fetchedResultsController 。例如:
- (void)configureCell:(UITableViewCell*)cell atIndexPath:(NSIndexPath*)indexPath{
Game *game = [self.frc objectAtIndexPath:indexPath];
Game *lastGame = [[[CoreDataAccess managedObjectContext] fetchObjectsForEntityName:@"Game" withPredicate:@"started == started.@max"] anyObject]; // Sometimes we get past this line, sometimes we don't...
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"EEE, MMM d, yyyy h:mm a"];
if (game != lastGame)
cell.detailTextLabel.text = [format stringFromDate:game.started];
else
cell.detailTextLabel.text = @"In Progress";
[format release];
...
}
还有这里:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
Game *lastGame = [[[CoreDataAccess managedObjectContext] fetchObjectsForEntityName:@"Game" withPredicate:@"started == started.@max"] anyObject];
if (lastGame == [frc objectAtIndexPath:indexPath])
return NO;
return YES;
}
这种精确的获取会在多个地方执行多次,例如在启动时,但它只在一个类中崩溃。正如我所说,它是间歇性的,但似乎是在我创建新的游戏对象之后的某个时间。游戏是在一个选项卡中创建的,上面的代码来自显示历史记录的第二个选项卡。
我见过类似的错误 here 。在这种情况下,通过重新启动计算机解决了问题,最终让 XCode 意识到该属性已从模型中删除。我已经尝试过了,但仍然遇到这个问题。我还尝试删除并重新创建模型中的“started”属性。我还阅读了《核心数据故障排除指南》,但也无法在那里找到任何帮助。
最佳答案
谓词一次应用于一个源对象。如果您的源对象没有数组属性,则无法使用数组运算符。
在你的例子中,谓词说:
Look at a given "Game". If its own "started" property is equal to its own "started" property with the @max KVC array operator applied, then this predicate will be true.
这不是你想要的。在谓词中使用 KVC 数组运算符的唯一情况是对象上的属性是数组。例如
获取“games.@max.homeTeamScore > 50”的每个“赛季”(即主队在一场比赛中得分超过 50 分的赛季)。这是可行的,因为“Season”上的“games”属性将是一个数组,因此 games.homeTeamScore 也将是一个数组。
但是,单个游戏的“started”属性不是数组。你要操作的数组实际上是所有游戏的数组,它不是游戏的属性。
访问所有游戏的数组的唯一扭曲方法是首先获取所有游戏的数组,然后在谓词外部应用数组运算符,然后在谓词内部仅应用相等测试。
即首先获取所有游戏,然后重新获取:
fetchObjectsForEntityName:@"Game" withPredicate:@"started == %@", [allGames valueForKey:@"@max.started"]
但这也不是明智之举。
最终,您尝试使用的正确方法来获取具有最新开始日期的游戏,无法使用单行获取方法来完成。
您需要创建该方法的变体,允许您在获取请求上设置 setSortDescriptors: (按“开始”降序排序),然后在获取请求上设置 setFetchLimit:1 以仅获取第一个结果。
关于iphone - ExecuteFetchRequest 间歇性地抛出具有相同参数的异常。 "not key value coding-compliant for the key",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113061/
来自 java docs 公共(public) FileWriter(String fileName) 抛出 IOException 抛出: IOException - 如果指定的文件存在但它是目录而
我使用以下代码将我的 .net 客户端(基于 CQL)连接到 3 节点 Cassandra 集群。我以 30 条记录/秒的速度(从 RabbitMQ)获取数据,并且它们顺利地存储在 cassandra
如果在读取文件时缺少字段,我应该捕获 NoSuchElementException。如果缺少一个字段,我只需要跳到文件的下一行。我的问题是,我在哪里实现我的 try/catch 代码来做到这一点?这是
我正在尝试使用 ASP.NET MVC 实现 OpeinID 登录。我正在尝试按照 http://blog.nerdbank.net/2008/04/add-openid-login-support-
学习使用 Java 进行 xml 解析,并且正在编写一个测试程序来尝试各种东西。所有测试 System.out.println() 都是我在控制台中所期望的,除了 childElement 返回 [n
我正在尝试使用 SwingUtilities 创建 JFrame Thread tt = new Thread(new Runnable() { public void run
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我写了这段代码: MethodInfo method2 = typeof(IntPtr).GetMethod( "op_Explicit", Bind
我开始学习 Java,并且正在根据书本做一些练习。在执行此操作时,我遇到了以下错误:线程“main”java.util.InputMismatchException 中出现异常。我正在编写一个简单的程
我有一个文本文件,其中前两行是整数 m 和 n,然后有 m 行,每行都有 n 管道分隔值。我编写了一个程序,读取文件并使用文件中的值创建 m*n 数组,它工作了无数次,然后突然,使用相同的代码,使用相
所以我尝试使用在另一个类中生成的 bean 以在主应用程序中使用 package com.simon.spring.basics.properties; import org.spri
我还没有完成这个应用程序,但我希望在我的手机上看到它的样子。但是,它会强制关闭并引发 InstantiationException。 logcat 异常: 09-19 20:13:47.987: D/
我想从 UIViewController 加载一个基于 SwiftUI 的 View ,该 View 读取包本地的 json。仅 swiftUI 项目中的代码和绑定(bind)工作正常,当我利用 UI
'java.net.SocketTimeoutException:连接超时' 循环一段时间后我收到此错误。为什么我会收到 SocketTimeoutException?我该如何修复这个错误? @Ove
当有 null 值时抛出 ArgumentNullException() 是个好主意吗? This thread 没有提到在 null 上抛出的最明显的异常。 谢谢 最佳答案 ArgumentNull
我得到这个异常: NullReferenceException Object reference not set to an instance of an object at Namespace
所以其中一个方法的描述如下: public BasicLinkedList addToFront(T data) This operation is invalid for a sorted list
我正在使用 Intellij Idea,当我去生成 JavaDocs(通过工具 -> 生成 JavaDoc)时,我抛出了一个 IllegealArgumentException,没有关于发生了什么问题
我正在学习 C++ 中的互斥锁,但以下代码(摘自 N. Josuttis 的“C++ 标准库”)有问题。 我不明白为什么它会阻塞/抛出除非我在主线程中添加this_thread::sleep_for(
我正在试验 JavaFX 标签和组,通过鼠标拖动将它们移动到屏幕上。新节点从一些线程添加到动画组。但是,有时我会突然看到以下异常 - 我假设,当某些节点重叠时。但是不知道是什么问题……因为不涉及我的代
我是一名优秀的程序员,十分优秀!