从iPhone上缓存的应用程序组中的Watch App中刷新数据

时间:2015-08-09 14:47:08

标签: ios swift watchkit

要将数据从我的IOS应用程序传递到我的Watch应用程序,我将数据缓存到我的iOS AppDelegate中的NSUserDefaults(在应用程序组中)。 (我在didFinishLaunching和willTerminate中都称这种方法。)

然后,我通过应用程序组将此数据传递给我的Watch应用程序,一切正常。

问题在于,当我更改iPhone应用程序上的数据时,我也希望更新Watch App上的数据,但除非我卸载并重新安装Watch App,否则它不会更新。

我已经在awakeWithContext和willActivate中尝试从App Groups方法获取,但数据仍然是陈旧的。如何在卸载/重新安装时刷新Watch上的数据?

*编辑:换句话说,Apple Watch应用程序显然一直在手表上运行...而我更希望它被杀死,以便当用户更改iPhone应用程序上的数据时,然后点击手表应用程序它会打开新数据,而不是仅仅使用陈旧数据唤醒。

class InterfaceController: WKInterfaceController {

    var nameList: [String]?
    var currentUserName: String?

    var peopleDict: [String : [String : [String : String]]]?


    @IBOutlet weak var personTable: WKInterfaceTable!

    private func loadTableData() {

        if let list = nameList {

            personTable.setNumberOfRows(list.count, withRowType: "PersonTableRowController")

            for (index, personName) in enumerate(list) {
                if let row = personTable.rowControllerAtIndex(index) as? PersonTableRowController {
                    row.personLabel.setText(personName)

                } else { println("Could not cast as PersonTableRowController") }
            }
        }

    }


    func fetchFromAppGroup() {

        let defaults = NSUserDefaults(suiteName: "group.com.myndarc.thredz2")
        defaults?.synchronize()
        if let fetchedPeopleDict: AnyObject = defaults?.valueForKey("peopleDict") {


            //save peopleDict locally
            peopleDict = fetchedPeopleDict as? [String : [String : [String : String]]]


            if let dict = fetchedPeopleDict as? NSDictionary {
                nameList = dict.allKeys as? [String]
            }

        }
            if let user: AnyObject = defaults?.valueForKey("currentUser") {

                currentUserName = user as? String



        }
    }


    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)



    }

    override func willActivate() {

        super.willActivate()
        fetchFromAppGroup()

        loadTableData()


    }

0 个答案:

没有答案