2015-09-17 4 views
0

не под стендом, почему я должен использовать try и catch с назначениями как этот: oneпопытаться поймать быстрые 2,0

Кроме того, если я положить вещи в do ... while блок я хотел бы получить это:

two

+0

Не может ответить на первый блок, но для второго вашей функция требует возврата, который вы должны предусмотреть как попытки а catch – Glenn

+0

вещь 'habitsOfDay' является локальной для' do', поэтому я не могу получить к ней доступ за пределами 'do' – Liumx31

ответ

3

Вам нужно просто использовать сделать/поймать структуру, когда вы хотите обработать ошибку. Но если вы уверены, что ваш код не даст вам какой-либо ошибки, вы можете отменить распространение ошибки, используя !

let habitsOfDay = try! Realm().objects(Habit).filter("durationByDays_days contains %@", daySelected) 

Вы можете найти больше об обработке ошибки в яблочной документации: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

2
  1. Если вы не хотите, чтобы поймать возможные исключения следует отметить, что функция может бросить их к абоненту. Вы сделали это во втором примере (ключевое слово throws), но не в первом.

  2. Функция должна возвращать Results<Habit>, но это не так. У вас есть return habitsOfDay в первом примере, но не во втором.

1

Попробуйте использовать инструкцию охраны.

guard let habitsOfDay = Realm().objects(Habit).filter("durationByDays_days contains %@", daySelected) else {return} 
Смежные вопросы