Ошибка при получении данных plist после записи в него значения

Я пытаюсь создать файл plist для обмена данными между моим SKScene и контроллером просмотра настроек. Так как я разрешаю пользователю доступ к настройкам в любое время во время игры, если пользователь внес какие-либо изменения, я всегда получаю данные из plist-файла b4 при запуске игры.

func startGame() {
    gameStarted = true;

    plistPath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist");
    dict = NSMutableDictionary(contentsOfFile: plistPath);

    let speed: CGFloat = dict.valueForKey("Speed") as CGFloat;

}

Если пользователь вообще не заходит в настройки, чтобы изменить настройки, я могу запустить эту функцию без прерываний и ошибок. plistPath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist"); всегда выдает ошибку EXC_BAD_INSTRUCTION.

И вот как я меняю значение из plist

let plistPath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist");
var dict: NSMutableDictionary = NSMutableDictionary(contentsOfFile: plistPath);

dict = NSMutableDictionary(dict.setValue(speed, forKey: "Speed"));
dict.writeToFile(plistPath, atomically: true);

РЕДАКТИРОВАТЬ: я заметил, что проблема возникает из-за этой строки let speed: CGFloat = dict.valueForKey("Speed") as CGFloat; Кажется, что после ее удаления ошибки не возникают, но мне нужно, чтобы она считывала значение из plist?


person junyi00    schedule 27.06.2014    source источник


Ответы (1)


Попробуйте использовать

var plistPath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist");

Вместо

let plistPath = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist");

это решило мою проблему.

person Heena    schedule 18.08.2014