Swift - App Delegate不传递数据

时间:2016-02-12 03:45:28

标签: ios swift appdelegate url-scheme

我正在开发一个应用程序,它的数据来自URL,这是我正在使用的示例代码 AppDelegate.swift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var fromUrl: String!


    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject)-> Bool {

            print("Host: \(url.host!)")
            self.fromUrl = url.host!

            return true
    }

ViewController.swift

import UIKit

class ViewController: UIViewController {

    let appDelegate = AppDelegate()

    override func viewDidLoad() {
        super.viewDidLoad()

        print(appDelegate.fromUrl)

    }

它正在记录来自app delegate的url.host。但是,当我尝试从fromUrl中记录ViewController.swift的值时,它会返回nil。您认为这似乎是什么问题?谢谢!

1 个答案:

答案 0 :(得分:1)

ViewController中声明AppDelegate时,实际上是在实例化ApplicationDelegate的另一个实例。这与您实际使用的if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate { print(appDelegate.fromUrl) } 实例不同。尝试使用以下方法获取该参考:

#/profile?color=green