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 アプリは異なるグループを利用しているようです...それらは情報を共有しておらず、ローカルに保存しています。
誰かが同じ問題を抱えていますか?それを修正する方法はありますか?