신속하게 사전의 키에서 문자열로 배열을 채우려 고합니다.
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
‘AnyObject’가 string과 동일하지 않은 오류를 리턴합니다.
또한 시도
componentArray = dict.allKeys as String
get : ‘String’은 [String] (으)로 변환 할 수 없습니다
답변
스위프트 3 & 스위프트 4
componentArray = Array(dict.keys) // for Dictionary
componentArray = dict.allKeys // for NSDictionary
답변
스위프트 3 Dictionary
에는 keys
속성이 있습니다. keys
다음과 같은 선언이 있습니다.
var keys: LazyMapCollection<Dictionary<Key, Value>, Key> { get }
사전의 키만 포함하는 컬렉션입니다.
참고 LazyMapCollection
즉 쉽게 매핑 할 수 있습니다 Array
와 Array
의 init(_:)
이니셜.
에서 NSDictionary
로[String]
다음 iOS AppDelegate
클래스 스 니펫은의 속성을 [String]
사용하여 문자열 배열 ( ) 을 얻는 방법을 보여줍니다 .keys
NSDictionary
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let string = Bundle.main.path(forResource: "Components", ofType: "plist")!
if let dict = NSDictionary(contentsOfFile: string) as? [String : Int] {
let lazyMapCollection = dict.keys
let componentArray = Array(lazyMapCollection)
print(componentArray)
// prints: ["Car", "Boat"]
}
return true
}
에서 [String: Int]
로[String]
보다 일반적인 방법으로 다음 놀이터 코드는 문자열 키와 정수 값 ( )이 있는 사전에서 속성을 [String]
사용하여 문자열 배열 ( ) 을 얻는 방법을 보여줍니다 .keys
[String: Int]
let dictionary = ["Gabrielle": 49, "Bree": 32, "Susan": 12, "Lynette": 7]
let lazyMapCollection = dictionary.keys
let stringArray = Array(lazyMapCollection)
print(stringArray)
// prints: ["Bree", "Susan", "Lynette", "Gabrielle"]
에서 [Int: String]
로[String]
다음 놀이터 코드는 정수 키와 문자열 값 ( )이 있는 사전에서 속성을 [String]
사용하여 문자열 배열 ( ) 을 얻는 방법을 보여줍니다 .keys
[Int: String]
let dictionary = [49: "Gabrielle", 32: "Bree", 12: "Susan", 7: "Lynette"]
let lazyMapCollection = dictionary.keys
let stringArray = Array(lazyMapCollection.map { String($0) })
// let stringArray = Array(lazyMapCollection).map { String($0) } // also works
print(stringArray)
// prints: ["32", "12", "7", "49"]
답변
Swift의 사전 키 배열
componentArray = [String] (dict.keys)
답변
dict.allKeys
문자열이 아닙니다. 그것은 [String]
오류 메시지가 알려주는 것과 정확히 같습니다 (물론 키 가 모두 문자열 이라고 가정하면 정확히 말할 때 주장하는 것입니다).
따라서 componentArray
as 로 입력하는 것으로 시작 [AnyObject]
하십시오. 이것이 Cocoa API에서 입력되는 방식이기 때문입니다. 또는 dict.allKeys
캐스트하는 [String]
경우을 입력하십시오 componentArray
.
답변
extension Array {
public func toDictionary<Key: Hashable>(with selectKey: (Element) -> Key) -> [Key:Element] {
var dict = [Key:Element]()
for element in self {
dict[selectKey(element)] = element
}
return dict
}
}
답변
NSDictionary 는 Class (pass by reference)
Dictionary is Structure (pass by value )입니다.
====== NSDictionary의 배열 ======
NSDictionary에는 allKeys가 있으며 allValues 는 [Any] 유형의 특성을 가져옵니다 .
let objesctNSDictionary =
NSDictionary.init(dictionary: ["BR": "Brazil", "GH": "Ghana", "JP": "Japan"])
let objectArrayOfAllKeys:Array = objesctNSDictionary.allKeys
let objectArrayOfAllValues:Array = objesctNSDictionary.allValues
print(objectArrayOfAllKeys)
print(objectArrayOfAllValues)
====== 사전에서 배열 ======
Dictionary의 키 및 값 속성에 대한 Apple 참조 .
let objectDictionary:Dictionary =
["BR": "Brazil", "GH": "Ghana", "JP": "Japan"]
let objectArrayOfAllKeys:Array = Array(objectDictionary.keys)
let objectArrayOfAllValues:Array = Array(objectDictionary.values)
print(objectArrayOfAllKeys)
print(objectArrayOfAllValues)
답변
dict.keys.sorted()
[String] https://developer.apple.com/documentation/swift/array/2945003-sorted 를 제공합니다.