【发布时间】:2019-01-17 16:45:56
【问题描述】:
我需要将属性动态添加到现有类然后访问它们。我使用objc_setAssociatedObject 找到了this answer,但没有关于如何使用它的上下文。我怎样才能做到这一点?
let dict = ["orderId":"abc", "postId+0":"zero", "postId+1":"one", "postId+2":"two"] // postIds can go on
let order = Order(dict: dict)
let dynamicProperties = order.accessDynamicProperties()
print(dynamicProperties)
类:
class Order {
var orderId: String?
// I have a main initilizer that I use for something else that's why I'm using a convenience init
convenience init(dict: [String: Any]) {
self.init()
orderId = dict["orderId"] as? String
dynamicallyCreateProperties(dict: dict)
}
func dynamicallyCreateProperties(dict: [String: Any]) {
for (key, value) in dict {
if key.contains("+") {
// dynamically add property and value to class
}
}
}
// returns something???
func accessDynamicProperties() -> ??? {
}
}
【问题讨论】:
-
您真的要添加动态属性吗?相反,您可以将字典添加为属性,然后简单地将键/值对添加到该字典。
-
@DonMag 这实际上是个好主意。我刚刚尝试过,它正在工作。您可以将其发布为答案,我会接受。谢谢:)
-
@DonMag 我现在发布了一个答案。如果你发帖,我会删除我的并接受你的。感谢您的帮助:)
标签: ios swift class dictionary properties