不区分大小写的对选择器的响应'在斯威夫特

时间:2018-01-31 14:29:08

标签: swift respondstoselector

我从推送通知中获取了一些键和值。然后我想检查键是否是对象的属性,因此我可以相应地映射对象。但我希望能够使用小写键,并且对象属性是驼峰式的。

所以问题是人们如何在Swift 4中实现一个不区分大小写的NSObject版本:

self.responds(to: Selector(value))

1 个答案:

答案 0 :(得分:0)

  

但我希望能够使用小写密钥,并且对象属性是驼峰式的。

这里的问题是当你从camelCase转换为小写时丢失信息,所以你不能轻易地转换到另一个方向。

您需要构建一个将键映射到选择器的字典。虽然Swift有一些limited facilities for introspection,但手动创建字典可能最简单,只包含那些你想参与这个过程的属性:

let properties : [String] = ["firstName", "lastName", "address", "zipCode"]
var map = [String:String]()
properties {
    map[$0.lowercased()] = $0
}

现在,您可以使用map查找给定密钥的属性名称。