尝试使用swift中字典中的键填充数组 .
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
这将返回以下错误:'AnyObject'与string不同
也试过了
componentArray = dict.allKeys as String
但得到:'String'不能转换为[String]
8 回答
dict.allKeys
不是字符串 . 它是一个[String]
,正如错误消息告诉你的那样(当然,假设键都是字符串;这正是你在说的时断言) .所以,要么首先输入
componentArray
作为[AnyObject]
,因为这是在Cocoa API中输入的方式,否则,如果你强制转换dict.allKeys
,则将其强制转换为[String]
,因为这就是你输入componentArray
的方式 .Swift 3和Swift 4
使用Swift 3,
Dictionary
具有keys属性 .keys
有以下声明:注意LazyMapCollection可以很容易地映射到带有
Array
的init(_:)初始化程序的Array
.从NSDictionary到[String]
以下iOS
AppDelegate
类代码段显示如何使用NSDictionary
中的keys
属性获取字符串数组([String]
):从[String:Int]到[String]
以更一般的方式,以下Playground代码显示如何使用字符串键和整数值(
[String: Int]
)的字典中的keys
属性获取字符串数组([String]
):从[Int:String]到[String]
以下Playground代码显示如何使用带有整数键和字符串值(
[Int: String]
)的字典中的keys
属性获取字符串数组([String]
):Swift中字典键中的数组
NSDictionary 是 Class(pass by reference)
Dictionary 是 Structure(pass by value )
======来自NSDictionary的数组======
NSDictionary的 allKeys 和 allValues 获取类型为 [Any] 的属性 .
======数组来自词典======
Apple参考 Dictionary's keys 和 values 属性 .
这个答案将用于swift字典w / String键 . Like this one below .
这是我将使用的扩展 .
我稍后会使用这个来获取所有密钥 .
给[String] https://developer.apple.com/documentation/swift/array/2945003-sorted