【发布时间】:2012-03-19 13:24:49
【问题描述】:
在应用启动期间,我显示了一个表格视图。每行以某种形式显示托管对象的数据。一位客户报告应用程序启动时发生崩溃。我查看了他的崩溃日志,可以追踪到我在cellForRowAtIndexPath 方法中使用[NSManagedObject valueForKey:] 方法的地方。应用程序因[NSManagedObject valueForUndefinedKey:] 异常而崩溃。
为什么在 1000 多台设备中只有一台设备会出现此问题?运行相同版本的 iOS 和应用程序,我无法在任何设备上模仿它。出了什么问题?
Last Exception Backtrace:
0 CoreFoundation 0x3549e88f __exceptionPreprocess + 163
1 libobjc.A.dylib 0x368c5259 objc_exception_throw + 33
2 CoreFoundation 0x3549e5c5 -[NSException init] + 1
3 CoreData 0x329d3b23 -[NSManagedObject valueForUndefinedKey:] + 327
4 Foundation 0x312b59d1 _NSGetUsingKeyValueGetter + 125
5 CoreData 0x3298d995 -[NSManagedObject valueForKey:] + 121
6 MyApp 0x0000c513 -[Activity isOn:] (Activity.m:371)
7 MyApp 0x0000beaf -[Activity firstMarkableDate] (Activity.m:163)
8 MyApp 0x0000c0cb -[Activity statusString] (Activity.m:220)
9 MyApp 0x0000bd51 -[Activity statusColor] (Activity.m:139)
10 MyApp 0x00004af1 -[ActivityListViewController tableView:cellForRowAtIndexPath:] (ActivityListViewController.m:418)
11 UIKit 0x3251d0a3 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 547
【问题讨论】:
-
您是否在任何时候更新过您的应用程序?换句话说,这可能是您的核心数据模型中的版本更改吗?
-
应用的核心数据架构在任何 udpate 中都没有改变。并且相同的应用版本可以在我们的每一台设备(非开发设备)上完美运行
-
你必须看看你的
Activity,它似乎没有实现-isOn:(注意冒号)。 -
它已实现并且适用于我们所有的设备。 Activity.m 内 [Activity isOn:] 中的第 371 行使用 [object valueForKey:"trackname"] 行访问托管对象属性
-
你在调用什么 valueForKey,值应该是什么,键/值设置在哪里以及设置方式/设置什么。