参见英文答案 How to have stored properties in Swift, the same way I had on Objective-C?17个 我希望我的所有视图都有一个像标记一样存储的属性,但它必须是String类型.所以我尝试使用扩展程序. 但我得到
我希望我的所有视图都有一个像标记一样存储的属性,但它必须是String类型.所以我尝试使用扩展程序.
但我得到错误说扩展我不包含存储的属性.
问题是,如何在我的应用程序中的每个UIView中存储一个字符串,如标签?
谢谢!
您可以使用在目标c运行时中定义的setAssociatedObject和getAssociatedObject来实现此目的.import ObjectiveC var AssociatedObjectKey: UInt8 = 7 extension UIView { var myOwnTag: String? { get { return getAssociatedObject(self, associativeKey: &AssociatedObjectKey) as? String ?? "" } set { var propertyVal : String? = nil if let value = newValue { propertyVal = value } setAssociatedObject(self, value: propertyVal, associativeKey: &AssociatedObjectKey, policy: objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } }
有关更多详细信息,请参阅此blog.