我为具有标题和内容属性的笔记创建了一个模型类。我在第二个 init 中收到错误消息:从初始化程序返回而不初始化所有存储的属性。我觉得有些东西我错过了,我似乎看不到它。这是代码:
class Note{
private var _title: String
private var _content: String
var title: String!{
return self._title
}
var content: String!{
return self._content
}
init(title: String, content: String){
self._title = title
self._content = content
}
init(noteData: Dictionary<String, AnyObject>) {
if let title = noteData["title"] as? String {
self._title = title
}
if let content = noteData["content"] as? String {
self._content = content
}
}
}
您必须在其初始值设定项中初始化您的类的所有属性。关于您的字典初始值设定项,您应该使其容易出错并在缺少键/值对的情况下返回 nil:
class Note {
let title: String
let content: String
init(title: String, content: String) {
self.title = title
self.content = content
}
init?(dictionary: [String: Any]) {
guard
let title = dictionary["title"] as? String,
let content = dictionary["content"] as? String
else { return nil }
self.title = title
self.content = content
}
}
请注意,如果使用结构而不是类,您甚至不必为自定义对象实现初始化程序:
struct Note {
let title: String
let content: String
init?(dictionary: [String: Any]) {
guard
let title = dictionary["title"] as? String,
let content = dictionary["content"] as? String
else { return nil }
self.title = title
self.content = content
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句