【问题标题】:NSUserDefaults to AppleWatchNSUserDefaults 到 Apple Watch
【发布时间】:2015-04-06 11:49:53
【问题描述】:

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

两人在同一组

然后我从手表开始

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”

我尝试以另一种方式传递相同的信息,但也没有成功。 但如果我只是简单地在同一个“设备”上 println() 存储的值,它就可以工作。

知道我做错了什么吗?

【问题讨论】:

    标签: iphone swift nsuserdefaults watchkit


    【解决方案1】:

    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)
        }
    }
    

    【讨论】:

      【解决方案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)
      

      【讨论】:

      • 如果没有名为“group.WatchDate”的套件,您的代码会崩溃。尝试使用“如果让”!
      • @stk:不,由于?,代码不会崩溃。它只在对象不为 nil 时执行
      • 你真的运行过代码吗?我收到编译错误:Expected type after 'as'。没有as! 可以强制展开,只需省略?。如果我强制打开它,则会出现运行时错误EXC_BAD_INSTRUCTION
      • 啊-您使用的是 Swift 1.1 (Xcode 6.2)。那么你是对的,你必须改变语法并使用if let ...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多