【发布时间】:2018-10-24 14:46:50
【问题描述】:
情况:Mac OS X 10.6 Swift 4.2 Xcode 10.0 应用程序。存储在 Sqlite db 中的数据,然后将其放入数组控制器和 tableview 的数组中。 ArrayController 的对象控制器的 Mode 设置为 Class,Class Name 为“Recording”(无引号),结构如下(在名为 Recording 的 swift 文件中):
@objc(Recording)
class Recording: NSObject {
@objc dynamic var user: UUID
@objc dynamic var recordingdate: Date
@objc dynamic var recordingtime: String
@objc dynamic var occurrence: String
@objc dynamic var reading: Int32
@objc dynamic var note: String
init(user: UUID, recordingdate: Date, recordingtime: String, occurrance: String, reading: Int32, note: String) {
self.user = user
self.recordingdate = recordingdate
self.recordingtime = recordingtime
self.occurrence = occurrance
self.reading = reading
self.note = note
}
}
ArrayController 绑定到 ViewController,Model Key Path 设置为 RecordingsArray,这是一个 Recording 对象的数组。
TableView 表格内容绑定到 ArrayController,Controller Key 设置为arrangedObjects。有 3 列,每个 Table View Cell 绑定到它们的 Table Cell View,ModelKey Paths 设置为 objectValue.aRecordingVar。
问题是我不断收到以下错误:
这个类不符合键 RecordingsArray 的键值编码。
Sqlite db 有一个名为 Recordings 的实体,具有以下属性:
note: String
occurrence: String
recnum: Int32
recording: Int32
recordingdate: Date
recordingtime: String
user: UUID
我已经毫无影响地清理和重建了项目,并观看了许多关于这个主题的 youtube 视频和谷歌搜索,没有偏离过程。有人对出了什么问题有任何想法吗?
【问题讨论】:
-
“这个类不符合键值编码的键记录。”:什么类?你能显示完整的错误信息吗?
-
该类是上面清单中显示的 Recording 类。完整的错误消息很长,但给出的语句是错误列表的要点。
-
请至少显示完整的错误消息
this class is not key value coding-compliant for the key RecordingsArray.部分。会不会是 InterfaceBuilder 中设置错误的类的问题?改名?等等。 -
同时显示
RecordingsArray的声明。 -
2018-10-24 10:49:54.524851-0400 路径 ~/Contents/Resources/Base.lproj/Main.storyboardc/RecordingsVC.nib 中的 Interface Builder 文件中的未知类。 [常规] [
valueForUndefinedKey:]:此类对于键 RecordingsArray 不符合键值编码。