2016-03-26 23 views
0

Swift ile çalışmaya başladım ve bir Array dosyasını bir plist dosyasına yazmak amacıyla bir NSArray öğesine dönüştürmem gerekiyor. Ben arr, ben hata olsun NSArray içine dönüştürmeye çalıştığınızdaSwift Array'i NSArray'a Dönüştürme

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); 
} 

: İşte benim kod "türü [Herhangi] Belirtilen tipine NSArray değerini dönüştürülemez."

+0

Eğer self.objects ilanını gösterebilir. Tam olarak nedir? – ryantxr

+0

var objects = [AnyObject]() – Bawpotter

cevap

3

a, [Any] türünde olduğu için alıyorsunuz ve bunu NSArray numaralı telefona köprüleyemezsiniz. Bunun nedeni, NSArray'un yalnızca Sınıf türlerini içerebilmesinin ve Any'un herhangi bir türde bir örneği temsil edebileceğidir.

a ürününü [AnyObject] olarak bildirecekseniz muhtemelen iyi olursunuz. Ancak, sözlüğün türünü [String:AnyObject] olarak değiştirmeniz gerekecektir.

Veya bir NSMutableArray kullanın ve tamamen köprüleme vazgeçmek olabilir:

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

Bunun yerine NSMutableArray kullanacağım, bu çok daha basit ve sorunumu ortadan kaldırır. Teşekkürler!! – Bawpotter