我可以从IOS获取数据,但是请注意。如果我通过watchkit扩展名保存数据,IOS将无法获取数据,因此很奇怪。我已经添加了组并创建了配置文件。
以下是我的代码段:

class InterfaceController: WKInterfaceController {

@IBOutlet var outputLabel: WKInterfaceLabel!
override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    // Configure interface objects here.
}

override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    super.willActivate()
}

override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
}


// load the data from the IOS
@IBAction func loadData() {
    let userDefaults = UserDefaults.standard
    userDefaults.synchronize()
    let outputData = userDefaults.string(forKey: "share")
    self.outputLabel.setText(outputData)
}
}

class ViewController: UIViewController {

@IBOutlet weak var inputData: UITextField!
@IBOutlet weak var inputLabel: UILabel!
@IBOutlet weak var outputLabel: UILabel!

// input string into the fieldText and save them in Group by NSUserDefaults
@IBAction func saveData(_ sender: AnyObject) {
    let inputData1 = self.inputData.text
    self.inputLabel.text = inputData1
    let userDefaults = UserDefaults.standard
    userDefaults.setValue(inputData1, forKey: "share")

    userDefaults.synchronize()
    self.outputLabel.text = userDefaults.string(forKey: "share")

}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

最佳答案

即使应用程序扩展程序包嵌套在其包含应用程序的程序包中,运行中的应用程序扩展程序和包含应用程序的程序也无法直接访问彼此的容器。

要启用数据共享,请使用Xcode或Developer门户为包含的应用程序及其包含的应用程序扩展名启用应用程序组。接下来,在门户中注册应用程序组,然后指定要在包含的应用程序中使用的应用程序组。

启用应用程序组后,应用程序扩展及其包含的应用程序都可以使用NSUserDefaults API共享对用户首选项的访问。要启用此共享,请使用initWithSuiteName:方法实例化新的NSUserDefaults对象,并传入共享组的标识符。

objective-c

// Create and share access to an NSUserDefaults object

NSUserDefaults * sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"com.example.domain.MyShareExtension"];

// Use the shared user defaults object to update the user's account

[sharedDefaults setObject:@"Your Value" forKey:@"Your Key"];

迅速:
func saveUserDefaults() {

let sharedDefaults = NSUserDefaults(suiteName: "com.example.domain.MyShareExtension")
    sharedDefaults?.setObject("Your Value", forKey: "Your Key")
    sharedDefaults?.synchronize()

}

07-27 14:50