2016-03-26 2 views
0

Я только начал работать с Swift, и мне нужно преобразовать массив в NSArray для записи в файл plist. Вот мой код:Преобразование Swift Array в 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 обр, я получаю сообщение об ошибке «Не удается преобразовать значение типа [Любой] для указанного типа 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

Смежные вопросы