2015-11-13 4 views
1

Я пытаюсь вызвать save функции в моем классе модели, однако, даже если он работает на 1.2, он выдает эту ошибку в 2.1:Swift 2 - аргумент передается для вызова, который не принимает никаких аргументов

Argument passed to call that takes no arguments

func save() -> NSError?{ 
    var error: NSError? 
    self.context?.save(error) // Error: Argument passed to call that takes no arguments 
    return error 
} 

Edit:

я преобразовал код:

func save() -> NSError?{ 
    do { 
     try context!.save() 
    } catch let error as NSError? { 
     print("error saving core data: \(error)") 
    } 
} 

... но теперь я получаю:

Missing return in a function expected to return 'NSError?'

ответ

1
func save() -> NSError?{ 
    do { 
     if let context = context { 
      try context.save() 
     } 
    } catch let error as NSError? { 
     print("error saving core data: \(error)") 
     return error 
    } 
    return nil 
} 
+0

Ace! Работает как шарм. Спасибо – senty

+0

контексте? .save() ..... быть осторожным с принудительной разворачиванием – user3441734

+0

Должен ли я использовать контекст? Или 'context!'? – senty

0

Я не знаю, этот метод или подкласс, но вы могли бы попытаться использовать указатель переменной ошибки.

self.context?.save(&error)

+0

Это заставляет меня удалить '&' символ с журналом ошибок: ' '&' используется с не входным аргументом типа '()'' – senty

+0

Хорошо, извините, @iVentis ответ выглядит перспективным – Tobonaut

+0

Но теперь я получаю другую ошибку, пожалуйста, проверьте мои изменения в вопросе – senty

2

в быстрой 2,0 реализация функции context.save изменяется в соответствии с новой обработкой ошибок!

изменить его

do{ 
     try context!.save() 
     }catch let error as NSError{ 
     print("error saving core data: \(error)") 
     } 
+0

Oh! Таким образом, я все метод обработки ошибок изменяется таким образом. Ура! – senty

+0

да, вы также можете увидеть его, если вы просто набираете context.save и дожидаетесь завершения кода, он говорит: «save() throws», это идентификатор, который вам нужно использовать do, try, catch block;) – iVentis

+0

У меня был проблема на сборке. Теперь я начал получать «Отсутствующий возврат в функции, ожидаемой для возврата NSError?», И когда я меняю «NSError» на «NSError?», Такая же ошибка продолжается. Есть ли у вас какие-либо идеи? – senty