首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaultsApp Groups WatchKit swift

NSUserDefaultsApp Groups WatchKit swift
EN

Stack Overflow用户
提问于 2015-12-17 00:49:45
回答 1查看 79关注 0票数 0

我尝试使用NSUserdefaults编写一个小的测试应用程序来在iPhone和Watch之间进行通信。但在尝试了许多解决方案后,它仍然不起作用。所以我在这里发布了我的代码来寻求帮助。谢谢!

iPhone端:导入UIKit

类ViewController: UIViewController {

代码语言:javascript
复制
@IBOutlet var addLabel: UILabel!

var n : Int = 0

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func addBtn(sender: AnyObject) {        
    n++
    addLabel.text = "\(n)"     
}

@IBAction func sendBtn(sender: AnyObject) {

    let mySharedDefaults = NSUserDefaults(suiteName: "group.com.sunyi.sharingdatasunyi")

    mySharedDefaults?.setInteger(n, forKey: "savedUserInput")

    mySharedDefaults?.synchronize()
}

}

和观察端:导入WatchKit导入基础

类InterfaceController: WKInterfaceController {

代码语言:javascript
复制
@IBOutlet var myWatchLabel: WKInterfaceLabel!

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)      
    // Configure interface objects here.
}

override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    super.willActivate()
}

override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
}

@IBAction func showBtn() {

    let mySharedDefaults = NSUserDefaults(suiteName: "group.com.sunyi.sharingdatasunyi")

    mySharedDefaults?.synchronize()

    var a : Int = -1

    a = mySharedDefaults!.integerForKey("savedUserInput")

    self.myWatchLabel.setText("\(a)")

}

}

我已经建立了应用程序组,ID是group.com.sunyi.sharingdatasunyi。项目名称为sharingdatasunyi。捆绑ID为com.sunyi.sharingdatasunyi。最后的结果是:无论我在手表端输入什么,在按下ShowButton on watch之后,标签总是显示0(不是-1,不是我的输入数字)。那么,我该怎么做呢?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 06:30:43

您使用的是watchOS 1还是2?在watchOS 2上,你不能使用NSUserDefaults在手表和iPhone之间通信,即使它们使用的是共享组。您应该考虑使用WatchConnectivity和sendMessage在两个设备之间进行实时通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34317599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档