2015-02-08 58 views
0

我想使用嵌入式框架中包含的通用模塊來共享iOS和WatchKit擴展之間的數據。通用模塊類具有與App Group一起保存在NSUserDefault中的共享數據。嵌入式框架內的應用程序組不能共享

但是,當從WatchKit擴展中讀取時,我在iOS應用程序中寫入App Group共享的內容不會被看到。

我已經在兩個目標中啓用了具有相同組ID的應用程序組。 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") 
    } 
} 

回答

0

簡化到只需保存布爾NSUserDefaults的以在iOS應用程序,然後試圖在觀看閱讀的最基本的層面後,我發現讀還是失敗了。

這促使我在開發人員中心註冊一個新的應用程序組。

然後,我將其更改爲適用於iOS和Watch目標的新App Group。一旦使用新的應用程序組一切正常!我現在可以在iPhone應用程序中編寫並在Watch中閱讀。

我不知道爲什麼第一個應用程序組無法工作,因爲我在創建第二個應用程序時遵循了完全相同的步驟。也許有一些bug這個測試版的Xcode

+0

我發現第一次添加一個應用程序組令人難以置信的繁瑣和無證。你應該提交一個錯誤報告,我很樂意複製它 – phillfarrugia 2015-02-08 10:59:47

相關問題