【问题标题】:Swift Data to today widget from host application从主机应用程序将数据快速传输到今天的小部件
【发布时间】:2016-06-30 01:19:47
【问题描述】:

如何将数据从主机应用程序传输到小部件?我在应用程序和小部件中使用框架中的相同功能。应用程序接收数据,小部件返回一个空数组。

public func readLED() -> [LEDController] {
    let defaults = UserDefaults.standard()
    if let saved = defaults.object(forKey: "ledControllers") as? NSData {
        return (NSKeyedUnarchiver.unarchiveObject(with: saved as Data) as! [LEDController])
    }
    return []
}

【问题讨论】:

    标签: ios xcode swift today-extension


    【解决方案1】:

    为我的英语水平道歉。

    要在 AppHost 和 Widget 之间共享数据,您应该像这样保存您的 userDefault 数据:

    静态类中的示例

    class UserDefaultDataHelper: NSObject {
        static func saveKeyToGroupApp(_ value: AnyObject?, withKey key:String) -> Void {
            UserDefaults(suiteName: "group.com.test")!.set(value, forKey: key)
            UserDefaults(suiteName: "group.com.test")!.synchronize()
        }
    
        //and to read values 
    
        static func loadKeyToGroupApp(_ key:String)  -> AnyObject? {
            if let loadedValue = UserDefaults(suiteName: "group.com.test")?.object(forKey: key){
                return loadedValue as AnyObject?
            }
            return nil
        }
    }
    

    并像这样读取 Widget 中的数据:

    let ledcontrollerdata = UserDefaultDataHelper.loadKeyToGroupApp("ledControllers")
    
    UserDefaultDataHelper.saveKey(yourData as AnyObject?, withKey: "ledControllers")
    

    您可以在多个应用程序、小部件等之间共享数据,但前提是它们位于具有 Bundle ID 组的“应用程序组”中。您应该在 group.com.test 中使用此 Bundle ID 组,并且两个项目都应该有各自的权利,并且都在 Capabilities -> AppGroups 中配置目标,选择您的 AppGroupDomain。

    【讨论】:

    • 是的,伙计,它以这种方式对我有用,但是非常需要在开发者帐户中设置应用程序组。
    • 当然@RamandeepSinghGosal,我忘了上面的描述,在开发者帐户,应用程序组中很重要。
    【解决方案2】:

    您将无法使用 UserDefaults.standard() 在包含应用程序和扩展程序之间共享数据。

    来自Apple

    即使应用扩展包嵌套在其包含 应用程序的捆绑包,正在运行的应用程序扩展和包含的应用程序没有 直接访问彼此的容器。

    所以....

    要启用数据共享,请使用 Xcode 或开发者门户启用 包含应用及其包含的应用扩展的应用组。

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多