2016-07-02 16 views
-1

Hallo Ich habe eine Array es NSDictionaries hat.Suche Schlüsselwert in NSDictionary Array swift

1st object->["111":title of the video] 
2nd object->["123":title of the other] 
3rd object->["133":title of another] 

Sagen wir, ich 123 Key in diesem Array und erhalten den Wert davon suchen möchten. Wie kann ich es tun? Bitte helfen Sie mir. Dank

UPDATE

var subCatTitles=[AnyObject]() 
let dict=[catData![0]:catData![4]] 
self.subCatTitles.append(dict) 
+0

Mögliches Duplikat von [Search Array of Dictionaries für Value in Swift] (http://stackoverflow.com/questions/28203443/search-array-of-dictionaries-for-value-in-swift) – Cristik

Antwort

1

Wenn Sie meinen, Sie haben ein Array wie folgt:

var anArray: [NSDictionary] = [ 
    ["111": "title of the video"], 
    ["123": "title of the other"], 
    ["133": "title of another"] 
] 

Dies funktioniert:

if let result = anArray.flatMap({$0["123"]}).first { 
    print(result) //->title of the other 
} else { 
    print("no result") 
} 

(Ich gehe davon aus „nehmen Sie die erste, wenn doppelte“ -Strategie.)

Aber ich bezweifle stark, wenn diese Datenstruktur wirklich für Ihren Zweck geeignet.

+0

statt 'NSDictionary ', Sie können' [[String: String]] 'für pure swift :) verwenden –

0

Zunächst ist Wörterbuch kein Array ....

import Foundation 
// it is better to use native swift dictionary, i use NSDictionary as you request 
var d: NSDictionary = ["111":"title of the video","123":"title of the other","133":"title of another"] 
if let value = d["123"] { 
    print("value for key: 123 is", value) 
} else { 
    print("there is no value with key 123 in my dictionary") 
} 
// in case, you have an array of dictionaries 
let arr = [["111":"title of the video"],["123":"title of the other"],["133":"title of another"]] 
let values = arr.flatMap { (d) -> String? in 
    if let v = d["123"] { 
     return v 
    } else { 
     return nil 
    } 
} 
print(values) // ["title of the other"]