共享用户默认值

Shared UserDefaults

我想通过共享 UserDefaults(与 AppGroup)在 iPhone 和 Apple Watch 之间共享数据,但是这两者之间的通信不起作用。当我查看共享容器中实际存储的文件时,我发现它们使用的不是同一个容器。有人可以帮我解决这个问题吗?

手表上的代码:

let suiteName = "group.suitname"
if let userDefaults = UserDefaults(suiteName: suiteName) {
   userDefaults.set(inputText, forKey: "watchTransfer")
   let groupPath = FileManager().containerURL(forSecurityApplicationGroupIdentifier: suiteName)!.appendingPathComponent("Library/Preferences")
   print(groupPath)
   print(userDefaults.string(forKey: "watchTransfer") ?? "Nothing stored")
}

iPhone 上的代码:

let suiteName = "group.suitname"
if let userDefaults = UserDefaults(suiteName: suiteName) {
   let string = userDefaults.string(forKey: "watchTransfer") ?? "Nothing stored"
   print("Fetched: \(string)")
   let groupPath = FileManager().containerURL(forSecurityApplicationGroupIdentifier: suiteName)!.appendingPathComponent("Library/Preferences")
   print(groupPath)
   return string
}

“现代”WatchOS 无法做到这一点。

参考:

Apple developer forum

您需要使用其他传输机制。喜欢 Watchconnectivity.