内容简介:本文主要讲一下如何用userdefaults在Today Extension和主App间传一些简单数据,传复杂数据的话需要用到数据库,其实大同小异。众所周知,iOS有沙盒机制,不同App之间无法直接共享数据,Today Extension和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数据,苹果为了在不打破沙盒的前提下能够传数据,就想出了App Group的方法。也就是说只要是属于一个组的App,就能互相传数据。
本文主要讲一下如何用userdefaults在Today Extension和主App间传一些简单数据,传复杂数据的话需要用到数据库,其实大同小异。
众所周知,iOS有沙盒机制,不同App之间无法直接共享数据,Today Extension和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数据,苹果为了在不打破沙盒的前提下能够传数据,就想出了App Group的方法。
也就是说只要是属于一个组的App,就能互相传数据。
先跟着下图走,添加一下today的小组件:
选Toady Extension,取个名字,我们这里是MyToady
找到主App的Target的Capabilities,把App Groups设为ON
点加号创建一个组,弹出框让我们给这个组取个名字,名字要求是唯一的,所以一般用group+bundle ID就好了
同样找到Toady的Target的App Group这里,选ON,等待几秒钟,就会出现刚刚我们在主App那里创建的App Group,选中这个组。
最后在主App的storyboard上弄一个label,用来待会把里面的文本传给Toady
准备工作完毕,上代码
ViewController:
class ViewController: UIViewController { //主App上的label @IBOutlet weak var hostData: UILabel! //创建一个userdefaults用来共享简单数据(之后的用法和UserDefaults.standard一样) //这里的name就是刚刚我们创建的App Group的名字 let sharedDefaults = UserDefaults(suiteName: "group.com.rongcosme.TodayTest") //根据业务逻辑在合适的地方把主App的数据存进sharedDefaults,这里为了演示方便就放在viewDidAppear里 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) sharedDefaults?.set(hostData.text!, forKey: "sharedData") } } 复制代码
TodayViewController:
class TodayViewController: UIViewController, NCWidgetProviding { //today小组件上的label,用于显示主App传过来的数据 @IBOutlet weak var todayData: UILabel! //同样是创建一个userdefaults let sharedDefaults = UserDefaults(suiteName: "group.com.rongcosme.TodayTest") //一般是在willappear里面,把主App放在UserDefaults里的数据取出来 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //这里共享的是string类型的数据,就用string方法 todayData.text = sharedDefaults?.string(forKey: "sharedData") } func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { completionHandler(NCUpdateResult.newData) } } 复制代码
以上所述就是小编给大家介绍的《iOS-Widgets小组件-Today Extension和主App之间的简单数据共享》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- vue组件之间8种组件通信方式总结
- 组件之间的通讯LiveDataBus
- 探索 React 组件之间的生命周期
- vue组件之间的数据传递方法
- 使用事件总线共享组件之间的Props
- Vue和React组件之间的传值方式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML Dog
Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99
For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!