まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

配列を検索する

配列にフィルタをかけたい場合は、こうなります。

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)

となります。