2016-06-28 2 views
-5

Я новичок в swift и обнаружил, что код RSSReader из Интернета и ошибка в swift2.Nil несовместим с ожидаемым типом аргумента '()'

class func saveManagedObjectContext(managedObjectContext:NSManagedObjectContext)->Bool{ 
     if managedObjectContext.save(nil){ 
      return true 
     }else{ 
      return false 
     } 
    } 

Nil не совместим с ожидаемым типом аргумента «()»
Вызов может бросить, но он не отмечен «попробовать», и ошибка не обрабатывается

enter image description here

Может ли кто-нибудь сказать мне, как я могу исправить это в swift2?
Thanks

ответ

3

Удалить nil из списка аргументов. Метод managedObjectContext.save() выдает ошибку в случае, если что-то пойдет не так. Правильный способ сделать это является

do{ 
    try managedObjectContext.save() 
    return true 
} 
catch{ 
    return false 
} 
2

метод save() не принимает никаких параметров, поэтому использование nil в качестве параметра является как излишним и недействительным. Кроме того, при вызове метода сохранения, он имеет возможность бросать ошибку, так что вы должны запрограммировать функцию для обработки, что возможная ошибка, например, так:

func saveManagedObjectContext(managedObjectContext:NSManagedObjectContext)->Bool { 
    do { 
     try managedObjectContext.save() 
     return true 
    } catch { 
     return false 
    } 
} 

Если у вас есть конкретные ошибки, которые вы хотите, чтобы поймать, синтаксис записывается следующим образом:

catch [errorNameHere] { 
    [codeToRun] 
} 

и если вы хотите, чтобы поймать несколько ошибок и запустить соответствующий код, вы можете написать следующее:

catch [errorNameHere] { 
    [codeToRun] 
} catch [anotherErrorNameHere] { 
    [codeToRun] 
} catch { 
    [defaultCodeToRun] /* if no errors are thrown that were written above, but 
    there is an error thrown, this default catch block will handle it. If there 
    is no catch block to handle an error thrown and no default catch block, the 
    compiler will simply exit without having run anything. */ 
} 

вы можете прочитать все об ошибке ч andling in Swift Documentation here.

+1

'класс func' является допустимым кодом. Он объявляет функцию типа вместо экземпляра. – dan

+0

@dan Ну ладно. Я исправлю это. Благодарю. – liamnickell

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