在Swift中符合Obj-C协议的属性

山姆

我正在Swift类中的Obj-C库中实现协议,该协议将以下两个属性定义为:

@property (nonatomic, assign, getter = isLoading) BOOL loading;
@property (nonatomic, readonly) UIExpansionStyle expansionStyle;

尽管我不确定在Swift类中如何符合这些要求。

我看过Obj-C的示例,但还没有从中收集任何解决方案。我试过用相同的名称声明类变量,但这没有用。关于我将如何处理的任何建议?

PS,有问题的库是https://github.com/OliverLetterer/SLExpandableTableView

我认为您正在使这项工作变得比需要做的难。使用这样定义的协议:

@protocol MyProtocol

@property (nonatomic, assign, getter = isLoading) BOOL loading;
@property (nonatomic, readonly) UIExpansionStyle expansionStyle;

@end

以下类符合:

class Conformer : MyProtocol {
    var loading: Bool
    var expansionStyle: UIExpansionStyle

    init(loading: Bool, expansionStyle: UIExpansionStyle) {
        self.loading = loading
        self.expansionStyle = expansionStyle
    }
}

给布尔型getters加上前缀is是可可约定,因此Swift已经知道了,不需要您在迅速方面做任何特殊的事情。

令人困惑的部分可能是目标C属性声明的所有修饰符。让我们一一介绍。

nonatomic 在Swift中没有等效功能,在这里无所事事。

assign 对于值类型是自动的,这里也不做任何事情。

getter = isLoading 是一种可可约定,Swift可以理解并且不需要您做什么才能完成此工作。

readonly可以在Swift中执行此操作(只需使用get{ }语法即可),但这不是必需的。这是因为允许您扩展协议制定的合同。MyProtocol需要有被称为属性expansionStyle,可以被读取,它确实说,它必须是不可能写入该属性的类型实现的协议,就像它没有说你不能有其他属性/同一类上的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift中符合Obj-C协议的属性

来自分类Dev

符合协议的Swift属性

来自分类Dev

符合协议的Swift属性

来自分类Dev

使类型的属性也符合Swift中的协议

来自分类Dev

使swift类符合定义属性的目标c协议

来自分类Dev

符合协议和类的Swift属性

来自分类Dev

使协议的属性符合KVC

来自分类Dev

Swift协议扩展,具有符合协议的属性

来自分类Dev

在Swift中符合ViewController中的协议

来自分类Dev

Swift:符合特定类别且同时符合多种协议的属性

来自分类Dev

在Swift中声明符合协议的Class

来自分类Dev

NSManagedObject无法符合Swift中的协议

来自分类Dev

无法在Swift中符合MKAnnotation协议

来自分类Dev

符合Objective-C协议的Swift类

来自分类Dev

如何在Swift中使用扩展协议在Obj-C类上公开现有属性

来自分类Dev

符合协议的Swift扩展

来自分类Dev

通用属性符合Swift中Encodable的struct

来自分类Dev

协议中的objective-c定义了一个属性协议

来自分类Dev

Swift中的Objective-C协议-显示不符合错误

来自分类Dev

swift方法中的参数“符合协议的类的类型”

来自分类Dev

类型“ myViewController”不符合Swift中的协议UIPIckerDataSource

来自分类Dev

无法在Swift中创建符合协议的类型的数组

来自分类Dev

如何在Swift中列出所有符合协议的类?

来自分类Dev

ViewController不符合Swift中的协议GMSAutoCompleteViewControllerDelegate

来自分类Dev

swift方法中的参数“符合协议的类的类型”

来自分类Dev

协议扩展中协议的访问计算属性

来自分类Dev

iOS11 Swift 4 - 如何检查 Swift 类是否符合 Objective-C 中定义的协议?

来自分类Dev

obj-c类中的未知swift属性

来自分类Dev

Swift:符合协议的AnyClass变量

Related 相关文章

热门标签

归档