2016-11-08 5 views
0

Я обновил это до XCode 8 этим утром и решил преобразовать мои файлы Swift в 2.3 вместо 3. Я решил все мои проблемы с компиляцией, за исключением кода ниже. Только случай MFMailComposeResultSent действительно делает что-то важное. XCode говорит, что MFMailComposeResultSent и другие подобные случаи являются неразрешенными идентификаторами. В последней документации показано, что я должен использовать MFMailComposeResult.sent, а функция автоматического предложения предлагает это как возможность, но также отказывается компилировать. Я был бы признателен за информацию о том, как сделать этот компилятор для использования с Swift 2.3.Константы MFMailComposeResult не компилируются в Swift 2.3

Спасибо.

func mailComposeController(controller:MFMailComposeViewController, didFinishWithResult result:MFMailComposeResult, error:NSError?) { 
    switch result.rawValue { 
    case MFMailComposeResultCancelled.rawValue: 
     print("Mail canceled") 
    case MFMailComposeResultSaved.rawValue: 
     print("Mail saved") 
    case MFMailComposeResultSent.rawValue: 
     makeToast("Successfully sent email.", duration: 3) 
     print("Mail sent") 
    case MFMailComposeResultFailed.rawValue: 
     print("Mail sent failure: \(error!.localizedDescription)") 
    default: 
     break 
    } 
    hideActivityIndicator() 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

ответ

1

Что такое rawValue? Просто включите случаи. Пример:

switch result { 
case .Cancelled: // something 
case .Saved: // something 
// .. and so on 
+0

Спасибо. Я действительно пробовал это с «.sent» и «.failed», что показывает документация, но это не сработало, я думаю, потому что эта документация для Swift 3. Ваш подход решил проблему. –

+0

Ну, конечно, это, в свою очередь, ставит вопрос о том, почему на земле вы решили использовать устаревшую версию Swift. Вы сделали вещи намного труднее для себя. Зачем? – matt

+0

Я перейду на 3, но вам нужно идти более постепенно, так как некоторые из предыдущих версий конверсий были достаточно серьезными, чтобы стоить целый день работы, чего я не могу себе позволить в данный момент. –

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