即将到来的主机应用程序断点后,共享扩展至无法快速运行

时间:2019-07-18 06:53:47

标签: ios swift xcode printing breakpoints

从共享扩展名(SLComposeServiceViewController)到以后的主机应用程序断点无法快速工作,并且打印也无法工作!!!!

override func viewDidLoad() {
    super.viewDidLoad()

    let userDefault = UserDefaults(suiteName: "group.com.abcd.sharecontent1")
    if let dict = userDefault?.value(forKey: "storedURLData"){

        let data = (dict as AnyObject).value(forKey: "urlData") as! Data
        let nameStr = (dict as AnyObject).value(forKey: "name") as! String
        print("Data is :- ", data)
        print("Name is :- ", nameStr)

        // Here nameStr data is going to Label but not printing
        self.lblText.text = nameStr

        // This print nameStr is not working
        print("NameStr is :-", nameStr)

        // Data to Swift Dictionary
        do {
            let dictionary = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) as! NSDictionary
            print("dictionary :-", dictionary)
        }
        catch {
            // catch error.
        }
        userDefault?.removeObject(forKey: "storedURLData")
        userDefault?.synchronize()
    } else {
        print("The value for key called storedURLData does not exist.")
    }
}

不调用断点并打印

1 个答案:

答案 0 :(得分:0)

如果此视图已经显示但没有取消分配,则viewDidLoad方法仅被调用一次。

我对您的建议是将代码移入自己的方法并调用该方法。

第二,如果您只需要一次数据,请从viewDidLoad方法中调用该方法。如果您需要在每次返回此视图时更新此数据,请使用viewWillAppearviewDidAppear方法进行调用,具体取决于您如何使用此数据(例如,将视图留给另一个查看并返回)。

第三,如果未命中您的断点并且未显示打印语句,则表示if let dict = userDefault?.value(forKey:"storedURLData"){内容不存在。仅当if let dict = ..存在且具有值时,才会击中dict内的打印语句和断点。您可能没有名为storedURLData的键的值,或者该键有拼写错误。

在声明您的userDefault以检查该对象内部内容并确认您的密钥storedURLData存在之后,放置一个断点。弄清楚是否不清楚所需值是否存在的最佳方法是:

if let dict = .... {
    // All of your code for when the dict exists
} else {
    print("The value for key called storedURLData does not exist.")
}

如果else语句打印出来,请在此处放置一个断点并检查您的userDefaults对象。