扩展可能不包含存储的属性

我可以使用扩展在Swift中实现这个,而不需要inheritance? 我得到这个错误扩展可能不包含存储属性

extension UIButton { @IBInspectable var borderWidth : CGFloat { didSet{ layer.borderWidth = borderWidth } } } 

你可以重写setter / getter,使它不是存储的属性,只是将set / get转发给图层。

 extension UIButton { @IBInspectable var borderWidth : CGFloat { set { layer.borderWidth = newValue } get { return layer.borderWidth } } } 

扩展不能添加存储的属性。 从文档 (计算属性部分):

注意

扩展可以添加新的计算属性,但不能添加存储的属性,或者将属性观察器添加到现有的属性。

如果你需要存储的属性,你应该创build一个子类,如下所示:

 class CustomButton : UIButton { @IBInspectable var borderWidth : CGFloat { didSet{ layer.borderWidth = borderWidth } } } 

我正在使用写入Objective-C的静态库。 这个库在Swift项目中使用。 这个协议有一个方法和属性。 我为协议添加了代码块。

 @class Message; @protocol LocalService @property (readonly) int action; - (Message *)getResponse:(Message *)request; @end 

所以当我需要遵守在静态库中编写Objective-C的协议。 我得到一个错误。

1-)types“ShowInitialViewLocalService”不符合协议“LocalService”

2-)扩展可能不包含存储的属性

所以我如何解决这个错误。

 import UIKit class ShowInitialViewLocalService: NSObject{ } extension ShowInitialViewLocalService : LocalService { var action: Int32 { get { return View.InitialView.rawValue } } func getResponse(_ request: Message!) -> Message! { let response = Response.init(source: request.target, target: request.source, relatedView: View.InitialView.rawValue, action: request.action, data: request.data) return response } } 

我希望这会帮助别人。