меня сталкиваются с этой проблемой много времени при преобразовании различных проектов в Swift3.0.
Поскольку эта проблема выглядит динамичной, у каждого есть свое решение, кроме любого универсального ответа. Но в этом вопросе основная проблема заключается в том, чтобы определить место для работы. Так что я следую, как показано ниже:
В моем случае AppDelegate отвечает.
Чтобы найти строку ошибки, перейдите к концу длинных ошибок description.You будет найти что-то вроде кода ниже:
1. While emitting IR SIL function @_TFC9MyProject11AppDelegate21getNotificationDetailfGSqGVs10DictionaryVs11AnyHashableP___T_ for 'getNotificationDetail' at /Users/ABC/Documents/BitBucket/iOS/2016/Projects/MyProject/AppDelegate/AppDelegate.swift:153:5
Здесь 153
находится строка кода в AppDelegate.swift
.
func getNotificationDetail(_ launchOptions : [AnyHashable: Any]?) {
if launchOptions != nil {
let dictLaunch = launchOptions! as NSDictionary
NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.openRespectiveNotificationScreen), name: NSNotification.Name(rawValue: WebServiceKey.APPMANAGER_SERVICE_CALL_FINISH), object: nil)
inactiveUserInfo = dictLaunch.object(forKey: UIApplicationLaunchOptionsKey.remoteNotification) as? NSDictionary
}
}
Затем прокомментируйте весь код внутри метода и постройте снова. Затем попробуйте разогнать одну строку, так что вы, наконец, получите строку, которая генерирует ошибку.
После нахождения точной строки кода вы можете легко ее исправить.
В моем коде я обнаружил, что последняя строка этого метода генерирует ошибку.
Таким образом, я заменяю его на код ниже, и он строится успешно.
inactiveUserInfo = dictLaunch[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary
Так что главное - отлаживать осторожно. Попробуйте этот способ, вы обязательно решите ошибку.
Когда вы открываете Xcode 7, он попросит вас обновить проект, чтобы использовать Swift 2.0, что может сломать что-то, что такое журнал ошибок? –
@MichaelWang Журнал ошибок непонятен (поверьте). Итак, я должен создать новый проект? –
ОК, так что вы можете вернуть код обратно и попробовать открыть с помощью Xcode 7, но не конвертировать его, чтобы использовать Swift 2, чтобы узнать, можно ли его выполнить или нет? –