Я пытаюсь создать файл 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?