2015-11-19 3 views
0

Я пытаюсь сохранить данные игрыОшибка при попытке сохранить GameData

if !fileManager.fileExistsAtPath(path) { 
     // create an empty file if it doesn't exist 
     if let bundle = NSBundle.mainBundle().pathForResource("DefaultFile", ofType: "plist") { 
      fileManager.copyItemAtPath(bundle, toPath: path) 
     } 
    } 

Но есть ошибка: Вызов может бросить, но он не отмечен «попробовать», и ошибка не обрабатывается.

Этот вариант должен работать в Swift, но не Swift2 .. Как изменить код?

+0

Если вам нужна дополнительная консультация, просто напишите мне комментарий: -) –

ответ

1

Вы должны использовать Стриж новую попытку поймать

if (!fileManager.fileExistsAtPath(path)) { 
    // create an empty file if it doesn't exist 
    if let bundle = NSBundle.mainBundle().pathForResource("DefaultFile", ofType: "plist") { 
     do { 
      try fileManager.copyItemAtPath(bundle, toPath: path) 
     } catch { 
      //Catch Error Here 
     } 

    } 
} 

Это должно решить проблему вам, если не пишите мне :-)

0

Th причины ошибку

Call can throw, but it is not marked with 'try'

является поскольку, метод

public func copyItemAtPath(srcPath: String, toPath dstPath: String) throws 

указывает, что метод, который вы используете может бросить ошибку (см бросках ключевое слово?), Так что компилятор порекомендует вам поймать ошибку, используя быстрые попробовать метод поймать

if !fileManager.fileExistsAtPath(path) { 
// create an empty file if it doesn't exist 
if let bundle = NSBundle.mainBundle().pathForResource("DefaultFile", ofType: "plist") { 
      do { 
       try fileManager.copyItemAtPath(bundle, toPath: path) 
      } 
      catch { 
       //Catch error here 
      } 
     } 
    } 
Смежные вопросы