2015-01-20 5 views
-2

Прежде всего, я сожалею о своем бедном английском! У меня вопрос о введении значения в массивы с использованием языка Apple Swift. Я абсолютно новый в разработке Swift и iOS, поэтому я должен сказать «SORRY» еще раз.Вставить данные в массив [Swift]

У меня есть файл plist и способ его чтения и преобразования данных в NSDictionary. Эти данные я использую в Picker.

PLIST файла:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Years</key> 
    <array> 
     <string>2010</string> 
     <string>2011</string> 
     <string>2012</string> 
     <string>2013</string> 
     <string>2014</string> 
     <string>2015</string> 
    </array> 
</dict> 
</plist> 

И метод для чтения и преобразования:

func getList(fileName: String) -> NSDictionary? { 
    var myDict: NSDictionary? 
    if let path = NSBundle.mainBundle().pathForResource(fileName, ofType: "plist") { 
     myDict = NSDictionary(contentsOfFile: path) 
    } 
    return myDict? 
} 

Все в порядке. Теперь я пытаюсь преобразовать эти данные в Array и вставить его в UIPicker. Мой массив:

var Years = getList("Years")?.objectForKey("Years") as NSArray 

Существует вопрос: Я пытаюсь вставить данные в мой массив, и у меня есть несколько ошибок. Я пробовал все ... Я хотел бы вставить новое значение в нулевой индекс, но Вставить метод не работает, append метод тоже не работает (NSArray не имеет этих методов, нормально). Я пытался использовать NSMutableArray - ничего. Насколько я знаю, NSMutableArray имеет AddObject и insertObject методы, и я получил ошибку слишком (ошибка: Пустота не конвертируемая в NSArray)

Что я делаю не так? Как просто вставить значение в конец массива и нулевой индекс?

NSArray и ["value", ...] - это разные вещи?

Спасибо за помощь!

ответ

1

Если Years на самом деле NSArray, вы не можете ничего добавить к нему, потому что он неизменен. Вам необходимо сделать изменяемую копию,

var Years = getList("Years")?.objectForKey("Years") as NSArray 
var mutableYears = Years.mutableCopy() as NSMutableArray 
mutableYears.addObject("2016") 
mutableYears.insertObject("2009", atIndex:0) 

Вы действительно должны начинать имена переменных с буквы нижнего регистра.

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