2016-03-26 8 views
0

私はSwiftを使い始めました。plistファイルに書き込むために、配列をNSArrayに変換する必要があります。ここに私のコードは次のとおりです。スイフトアレイをNSArrayに変換する

func saveDataToFile() { 
     var a:Array = [Any]() 
    for thing in self.objects { 
     var dictionary = [String:Any]() 
     dictionary["name"] = thing.name 
     dictionary["location"] = thing.location 
     a.append(dictionary) 
    } 
    let arr: NSArray = a 
    cocoaArray.writeToFile(filePath, atomically:true); 
} 

私はNSArrayののARRに変換しようとすると、私はエラーが「指定された型にNSArrayに[任意]型の値を変換できません。」を取得します

+0

あなたはself.objectsの宣言を表示することができます。それは正確に何ですか? – ryantxr

+0

var objects = [AnyObject]() – Bawpotter

答えて

3

Cannot convert value of type [Any] to specified type NSArrayがあります。a[Any]であり、NSArrayにブリッジすることはできません。これは、NSArrayにはクラス型のインスタンスしか格納できず、Anyは任意の型のインスタンスを表すことができるからです。

a[AnyObject]と宣言した場合は、おそらく問題ありません。しかし、あなたはまた、辞書のタイプを[String:AnyObject]に変更する必要があります。

それとも、NSMutableArrayを使用し、完全にブリッジングを見送る可能性:

var a = NSMutableArray() 
for thing in objects { 
    var dictionary = [String:AnyObject]() 
    dictionary["name"] = thing.name 
    dictionary["location"] = thing.location 
    a.addObject(dictionary) 
} 
a.writeToFile(filePath, atomically: true) 
+0

私は代わりにNSMutableArrayを使用すると思います。これははるかに簡単で、私の問題を解決します。ありがとう!! – Bawpotter

関連する問題