gpt4 book ai didi

swift - NSUserDefaults 不适用于带有 Watch OS2 的 Xcode beta

转载 作者:IT王子 更新时间:2023-10-29 05:08:45 25 4
gpt4 key购买 nike

我刚刚安装了最新的 Xcode 测试版来试用 Swift 2 以及对 Apple Watch 开发部分所做的改进。

我实际上很难弄清楚为什么这种在 iOSWatch OS2 之间共享信息的基本 NSUserDefaults 方法不是工作。

我关注了this step-by-step tutorial检查我是否遗漏了过程中的某些内容,例如为电话应用程序和分机打开同一组,但这是我得到的: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 中,您不能再使用共享组容器。 Apple Docs:

Watch apps that shared data with their iOS apps using a shared group container must be redesigned to handle data differently. In watchOS 2, each process must manage its own copy of any shared data in the local container directory. For data that is actually shared and updated by both apps, this requires using the Watch Connectivity framework to move that data between them.

关于swift - NSUserDefaults 不适用于带有 Watch OS2 的 Xcode beta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com