Я пытаюсь обмениваться данными между моим расширением iOS и WatchKit, используя общий модуль, содержащийся во встроенной структуре. Общий класс модуля имеет общие данные, хранящиеся в NSUserDefault, с группой приложений.
Однако то, что я пишу в общий ресурс группы приложений в приложении iOS, не отображается при чтении из расширения WatchKit.
У меня включены группы приложений с одинаковым идентификатором группы в обеих целях. iOS читает и записывает без ошибок, и если Watch записывает данные, они также считывают их без ошибок, но ни один из них не видит записи, сделанные другим.
Любые мысли о том, как решить, высоко ценятся.
public class ShareManager() {
private let sharedKey = “kungFuShare"
public var kungfuFighters:Array<KungFu> = [];
public init() {
readFromShare()
}
public func readFromShare() {
let myData = NSUserDefaults(suiteName: "group.com.27feathers.kungfu"
if let rawData: NSData = myData?.objectForKey(sharedKey) as? NSData
{
var myData: AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(rawData);
self.kungfuFighters = myData as? [KungFu] ?? []
}
}
public func writeToShare() {
let myData = NSUserDefaults(suiteName: "group.com.27feathers.kungfu")
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.kungfuFighters)
myData?.setObject(saveData, forKey: sharedKey)
myData?.synchronize() // same behavior with or without this
}
}
public class KungFu: NSObject, NSCoding {
public var fighterName:String
public init(fighterName:String) {
self.fighterName = fighterName
}
required public init(coder: NSCoder) {
self.fighterName = coder.decodeObjectForKey("fighterName")! as String
super.init()
}
public func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(self.fighterName, forKey: "fighterName")
}
}