当前位置:  开发笔记 > 前端 > 正文

Swift等价于valueForKey:

如何解决《Swift等价于valueForKey:》经验,为你挑选了1个好方法。

这个问题涉及Swift集合类型,而不是 Swift中的Objective-C NS集合类型.

例如,我如何在Swift中执行此操作?

NSArray *items = // some JSON response
NSArray *names = [items valueForKey:"firstName"];

注意:这个问题是不是在一个多标记为已的副本的副本,因为这个问题是关于雨燕是否有打电话valueForKey的一种新的方式:对雨燕集合类型.这个问题是关于如何调用valueForKey:在斯威夫特的Objective-C的NS集合类型.换句话说,这个问题解决了如何以新的Swift方式做事,而不是以Objective-C方式做Swift.此外,该问题没有明确的接受答案.



1> James Kuang..:

valueForKey:在Swift 中没有,但是有一种方法可以map用来实现类似的(如果不是相同的话)结果.

相近 valueForKey:

// items contains dictionaries
let names = items.map { $0["firstName"] as? String }

// items contains objects
let names = items.map{ $0.firstName }

相近 valueForKeyPath:

let streets = items.map { $0["address"]?["street"] as? String }

Objective-C的

对于互操作性,您还可以使用强制转换来继续使用valueForKey:valueForKeyPath:

let streets = (items as NSArray).valueForKeyPath("address.street") as? NSArray

如果您正在使用NSDictionarySwift中的Objective-C NS集合类型,那么您仍然可以继续使用valueForKey:Swift语法调用.

let names = items.valueForKey("firstName")

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有