我刚刚安装了最新的 Xcode 测试版来试用Swift 2以及对 Apple Watch 开发部分所做的改进。
我实际上很难弄清楚为什么这种在iOS和Watch OS2NSUserDefaults
之间共享信息的基本方法不起作用。
我按照这个分步教程检查我是否在此过程中遗漏了某些内容,例如为电话应用程序和分机打开同一个组,但这是我得到的: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 使用了不同的组......他们没有共享信息,他们将它们存储在本地。
有人有同样的问题吗?知道如何解决吗?