配列を検索する
配列にフィルタをかけたい場合は、こうなります。
let array = ["愛知", "北海道", "東京"] //北という文字が該当する場合 let arPredicate = NSPredicate(format: "self contains[c] '北'") //その要素を抜き出しなさい let arArray = (array as NSArray).filteredArrayUsingPredicate(arPredicate) println(arArray)
また、配列をplistに書いた場合は以下となります。
1.Supporting Filesを右クリックして、Property Listsを選択
2.RootのTypeをDictionaryからArrayに変える
3.Rootの右にある+ボタンを押してデータ追加
をした状態で、
// プロジェクトに保存されたプロパティリストのパスを取得する let filePath = NSBundle.mainBundle().pathForResource("sample", ofType: "plist") // データをプロパティリストから読み込む var array = NSArray(contentsOfFile: filePath!)! //NSArrayをArrayに変換 var arr: [String] = array as! [String] //Arrayを文字列に変換 let str = arr.reduce("") { $0 + String($1) } switch str.lowercaseString as NSString { case let str1 where str1.rangeOfString("名古屋").length != 0: println("あるよ") case let str1 where str1.rangeOfString("北海道").length != 0: println("さらにあるよ") default: println("ないよ") }
となります。
上記は条件分岐を使っていますが、単純にplistの該当データを抜き出したい場合は、
// プロジェクトに保存されたプロパティリストのパスを取得する let filePath = NSBundle.mainBundle().pathForResource("sample", ofType: "plist") // データをプロパティリストから読み込む var array = NSArray(contentsOfFile: filePath!)! //NSArrayをArrayに変換 var arr: [String] = array as! [String] //北という文字が該当する場合 let arPredicate = NSPredicate(format: "self contains[c] '北'") //その要素を抜き出しなさい let arArray = (arr as NSArray).filteredArrayUsingPredicate(arPredicate) println(arArray)
となります。