我正在尝试使用Swift
(我很新),为我的数据模型创建一个干净的界面。这些模型支持Firebase
(尽管这与实际问题最终无关)。我想要避免的是反复写入大量的setter/accessor锅炉板代码。Swift在数据模型中的动态属性(获取器/设置器)
例如:
class MyData {
let connection: Firebase!
private var _name: String? // internal storage, like an iVar in ObjC
init(connection: Firebase!) {
self.connection = connection
self.connection.observeEventType(.Value, withBlock: { snapshot in
_name = snapshot["name"]
}
}
var name: {
get {
return _name
}
set(name) {
// When the client sets the name, write it to Firebase
_name = name
self.connection.childByAppendingPath("name").setValue(name)
}
}
}
我敢肯定,我做了很多错误的在那里。这个想法是,当实例被实例化时,数据首先从服务器加载。随后,我们可以拨打my_data_instance.name
来获取该名称,或者my_data_instance.name = "foo"
,并且名称将自动写入服务器。
这需要约10行代码的单个属性(其中会有很多)。赶快行动吧!一定会有更好的办法!
编辑:要清楚,我想避免需要编写大量样板代码越好。考虑像Mantle
这样的库,其中仅定义@property
就足以做你想做的一切。在我看来,任何超过一行的代码说I have an attribute called "name", handle it via Firebase
是过分冗长。
您可以使用Objective-C运行时的元编程功能在运行中大量添加属性。 –