NSUser默认为AppleWatch

时间:2015-04-06 11:49:53

标签: iphone swift nsuserdefaults watchkit

我目前正在疯狂,因为我无法找到错误。 我尝试将一些信息传递给我的WatchKit应用程序,但这对我不起作用。

两者都属于同一组

enter image description here

然后我从Watch with

开始
NSUserDefaults(suiteName: "group.WatchDate")
NSUserDefaults.standardUserDefaults().setObject("1", forKey: "TEST")
NSUserDefaults.standardUserDefaults().synchronize()

在手表上启动应用程序后,我切换到"手机应用程序"并让它println()存储的值

NSUserDefaults(suiteName: "group.WatchDate")
println("Saved Informations:")
println(NSUserDefaults.standardUserDefaults().objectForKey("TEST"))

输出始终为" nil"

enter image description here

我用另一种方式尝试了相同的传递信息,也没有成功。 但是,如果我只是println()存储的值在同一"设备"它有效。

知道我做错了吗?

2 个答案:

答案 0 :(得分:3)

zisoft有正确的观点,但据我所知,我的代码是更安全,更清晰(更易读)的方式。我还考虑到,在不使用反向DNS风格的情况下命名您的应用程序组不被视为最佳做法。

设置数据:

import Foundation

if let sharedDefaults = NSUserDefaults(suiteName: "group.com.mycompany.WatchDate") {
    sharedDefaults.setObject("1", forKey: "TEST")
    sharedDefaults.synchronize()
}

阅读数据:

import Foundation

if let sharedDefaults = NSUserDefaults(suiteName: "group.com.mycompany.WatchDate") {
    if let sharedString = sharedDefaults.objectForKey("TEST") as? String {
        println(sharedString)
    }
}

答案 1 :(得分:2)

NSUserDefaults(suiteName)已经返回NSUserDefaults个对象,因此您不能再次调用standardUserDefaults()。试试这种方式:

let sharedDefaults = NSUserDefaults(suiteName: "group.WatchDate")
sharedDefaults?.setObject("1", forKey: "TEST")
sharedDefaults?.synchronize()

另一方面:

let sharedDefaults = NSUserDefaults(suiteName: "group.WatchDate")
let s = sharedDefaults?.objectForKey("TEST") as! String
println(s)