我刚刚安装了最新的 Xcode 测试版来尝试Swift 2以及对 Apple Watch 开发部分所做的改进。
我实际上很难弄清楚为什么这个基本NSUserDefaults
之间共享信息的方法iOS and 观看 OS2不工作。
我跟着this 一步步教程检查我是否在此过程中遗漏了某些内容,例如为电话应用程序和分机打开同一组,但这是我得到的:NOTHING.
这是我为 iPhone 应用程序中的 ViewController 编写的内容:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lb_testo: UITextField!
let shared_defaults:NSUserDefaults = NSUserDefaults(suiteName: "group.saracanducci.test")!
var name_data:NSString? = ""
override func viewDidLoad() {
super.viewDidLoad()
name_data = shared_defaults.stringForKey("shared")
lb_testo.text = name_data as? String
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func upgrade_name(sender: AnyObject) {
name_data = lb_testo.text
shared_defaults.setObject(name_data, forKey: "shared")
lb_testo.resignFirstResponder()
shared_defaults.synchronize()
}
}
这是我在 WatchKit 的 InterfaceController 中的内容:
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet var lb_nome: WKInterfaceLabel!
let shared_defaults:NSUserDefaults = NSUserDefaults(suiteName: "group.saracanducci.test")!
var name_data:NSString? = ""
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
}
override func willActivate() {
super.willActivate()
if (shared_defaults.stringForKey("shared") != ""){
name_data = shared_defaults.stringForKey("shared")
lb_nome.setText(name_data as? String)
}else{
lb_nome.setText("No Value")
}
}
override func didDeactivate() {
super.didDeactivate()
}
}
我做了一些测试,看起来 iOS 应用程序和 Watch OS 利用了不同的组......他们不分享信息,他们将它们存储在本地。
有人有同样的问题吗?知道如何修复它吗?
使用 watch OS2,您无法再使用共享组容器。苹果文档:
观看使用共享组与其 iOS 应用共享数据的应用
容器必须重新设计才能以不同的方式处理数据。在 watchOS 2 中,
每个进程必须管理本地中任何共享数据的自己的副本
容器目录。对于实际共享和更新的数据
这两个应用程序,这需要使用 Watch Connectivity 框架
在它们之间移动该数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)