Я только что установил последнюю версию Xcode, чтобы попробовать Swift 2 и улучшения, внесенные в раздел разработки Apple Watch.
Мне действительно сложно понять, почему этот базовый метод NSUserDefaults
для обмена информацией между iOS и Watch OS2 не работает.
Я последовал за этим пошаговым руководством, чтобы проверить, не пропустил ли я что-то в этом процессе, например, включив ту же группу для приложения телефона и расширения, но вот что я получил: НИЧЕГО.
Вот что я написал для ViewController в приложении iPhone:
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()
}
}
И вот что я имею в InterfaceController для WatchKit:
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 Watch используют разные группы... они не используют информацию, они хранят их локально.
Есть ли у кого-то такая же проблема? Любая идея, как это исправить?