Ошибка сегментации 11 только для xcode 10 swift 3 - PullRequest
0 голосов
/ 13 марта 2019

Я использовал xcode 9.4 с swift 3, код работает нормально, и он был в прямом эфире. Теперь, когда я запускаю свой код в xcode 10.1, я получаю много ошибок segmentation fault 11 для многих файлов. Не уверен, как я могу это сделать. И как я могу конвертировать мой swift 3 в swift 4. Поскольку у меня много файлов, мне нужно изменить синтаксис .

Лучше мне нужно использовать swift 3 в xcode 10.1 и решить эту проблему segmentation fault 11.

Основная ошибка, которую я получил здесь:

  1. Во время передачи SIL для «application (_: didReceiveRemoteNotification :)» в /Users/Documents/Rough/jeder/JEDE_r/AppDelegate.swift:258:5
  2. Пока silgen emitFunction SIL, функция "@ $ S3WCi11AppDelegateC11application_28didReceiveRemoteNotificationySo13UIApplicationC_SDys11AnyHashableVypGtF". для приложения (_: didReceiveRemoteNotification :) 'в /Users/Documents/Rough/jeder/JEDE_r/AppDelegate.swift:258:5 ошибка: Ошибка сегментации: 11

Мой код:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) 
{
    if application.applicationState == .inactive || application.applicationState == .background {
        //opened from a push notification when the app was on background
    }
    else
    {
        if application.applicationState == .active
        {
            let myuserinfo = userInfo as NSDictionary
            print(myuserinfo)

            let tempDict:NSDictionary = (myuserinfo.value(forKey: "aps") as? NSDictionary)!
            let alert = UIAlertView(title: "alertView", message: (tempDict.value(forKey: "alert") as? String)!, delegate: nil, cancelButtonTitle:"Cancel", otherButtonTitles: "Done", "Delete")
            alert.show()
            let person:NSDictionary = (tempDict.value(forKey: "custom") as? NSDictionary!)!
        }
    }
}

Какие проблемы здесь. Как я могу решить все ошибки segmentation fault 11 около 22 файлов, показывая эту ошибку.

Помогите, пожалуйста!

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Измените эту строку:

let person:NSDictionary = (tempDict.value(forKey: "custom") as? NSDictionary!)!

на

let person:NSDictionary = (tempDict.value(forKey: "custom") as? NSDictionary)!

Также в том же приложении укажите еще один метод, который вы делаете так же.Замените эту строку над одним.Может быть, это поможет.Дайте мне знать или отправьте любые другие вопросы, если они у вас есть.

0 голосов
/ 13 марта 2019

Пожалуйста, попробуйте ниже код

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any])
    {
        if application.applicationState == .inactive || application.applicationState == .background {
            //opened from a push notification when the app was on background
        }
        else
        {
            if application.applicationState == .active
            {
                let myuserinfo = userInfo as NSDictionary
                print(myuserinfo)

                let tempDict:NSDictionary = ((myuserinfo.value(forKey: "aps") as? NSDictionary))!
                let alert = UIAlertController(title: "alertView", message: (tempDict.value(forKey: "alert") as? String)!, preferredStyle: .alert)
                let ok = UIAlertAction(title: "OK", style: .default, handler: nil)
                alert.addAction(ok)
                //alert.show()
                self.window?.rootViewController?.present(alert, animated: true, completion: nil)
                let _:NSDictionary = (tempDict.value(forKey: "custom") as? NSDictionary)!
            }
        }
  }
...