我最近开始使用swift进行编程,目前正在创建一个应用程序,它从服务器接收json数据。我想知道创建数据模型的最佳方法。首先我尝试创建一个类并if let
所有属性,但我发现它太麻烦了(我有10-12个proeprties的对象):
class Favourite {
var mArtikelText: String = ""
var mRid: String = ""
init(object: [String: AnyObject]) throws {
if let text = object["text"] as? String {
self.mArtikelText = text
}
if let id = object["id"] as? String {
self.mRid = id
}
}
}
然后我阅读了有关新guard
关键字的信息并决定尝试使用它:
enum JSONResponseError: ErrorType {
case NilResponseValue
}
class Favourite {
var mArtikelText: String
var mRid: String
init(object: [String: AnyObject]) throws {
guard let text = object["text"] as? String else {
self.mArtikelText = ""
throw JSONResponseError.NilResponseValue
}
guard let rid = object["id"] as? String else {
self.mRid = ""
throw JSONResponseError
}
self.mArtikelText = text
self.mRid = rid
}
}
但我得All stored properties of a class instance must be initialized before throwing from an initializer
。我想如果我初始化属性,当我在第一个例子中声明它时,我可以使错误无效,但是(如果我错了,请纠正我)我认为guard
用于避免正是这种方法。
然后我立刻尝试了guarding
所有属性:
class Favourite {
var mArtikelText: String
var mRid: String
init(object: [String: AnyObject]) throws {
guard case let (text as String, rid as String) = (object["text"], object["id"]) else {
self.mArtikelText = ""
self.mRid = ""
throw JSONResponseError.NilResponseValue
}
self.mArtikelText = text
self.mRid = rid
}
}
但是我不喜欢这种方法,因为我只想留下错误的价值并与其他人一起工作(有时我会收到nil
值,但我还是不会使用,所以没有必要抛弃整个答案)。
所以,我的问题是,从json字典创建可靠模型类的最佳方法是什么?