2014-10-14 15 views
6

Ist es möglich, Schlüssel-Code (KVC) mit nativen Swift-Datenstrukturen wie Array und Dictionary? Schlüsselwert-Codierung für NSFoundation Strukturen innerhalb Swift noch verfügbar ist, genau wie in Objective C.Key-Value-Codierung (KVC) mit Array/Dictionary in Swift

Zum Beispiel das gilt:

var nsarray: NSArray = NSArray() 
// Fill the array with objects 
var array: NSArray = nsarray.valueForKeyPath("key.path") 

Aber das ist ungültig:

var swiftarray: Array = [] 
// Fill the array with objects 
var array = swiftarray.valueForKeyPath("key.path") // Invalid, produces a compile-time error 
+0

meinen Sie 'swiftarray' bei der letzte Zeile des Codes? –

+0

Ja, danke. Habe es einfach geändert. – kev

+0

Schau dir diesen Beitrag von Matt Long an: http://www.cimgf.com/2014/11/05/swift-and-valueforkeypath-you-cant-keep-a-good-api-down/ –

Antwort

11

Es scheint, dass KVC auf nativen Swift-Objekten einfach nicht unterstützt wird. Hier ist die eleganteste Abhilfe, die ich gefunden habe:

var swiftarray: Array = [] 
// Fill the array with objects 
var array: NSArray = (swiftarray as NSArray).valueForKeyPath("key.path") as NSArray 
8

ich das gefunden habe:

var array = swiftarray.map({$0["key.path"]! as ObjectType}) 
2

Sie können wie folgt vorgehen:

let items : Array<String> = (myArray as AnyObject).valueForKeyPath("name") as! Array<String>