iOS 开发之Widget的开发及使用(下)

4 篇文章 0 订阅
在iOS 开发之Widget的开发及使用(上)中都交代清楚了关于widget扩展的添加,以及布局部分的内容,下面说下关键部分:关于数据共享的操作。

在Apple发布iOS8.0以后,对App有提供一个新的扩展选择项,叫做App groups,选择宿主Target之后,在capabilities选项卡下面会找到这个选项:

那么这个选项主要是做何使用呢?

iOS系统,每个开发应该都清楚,其内部程序都是遵循沙盒机制,App与App之间,是不能进行数据共享的,A 不能访问 B 的数据,同样 B 也不能访问 A 的数据。不要问为什么,iOS天生就这样任性。

为了能够让widget共享到宿主程序中的数据,所以,App groups这个功能就应运而生了。

选择宿主程序的Target,打开这个选项,然后添加你所需要的key进去,如下面图所示,这是我加的两组:

这两组key可以作为你将宿主程序的数据共享给扩展的主要主要和关键部分。

然后在选择扩展程序的Target,同样的操作,选择打开App groups,只是不同的是,这里的key不需要你再进行添加,而是进行勾选。

做完这些事情之后,基本数据共享的步骤就进行了一大半了,下来是具体的数据共享部分的代码部分的工作了。

通过App groups,可以用NSUserdefault和宿主程序进行小的数据共享,当然也可能是CoreData、sqlite或者其他的大数据的共享。

在用NSUserDefault做数据共享的时候,如果只是常规存储数据,读取数据如:

[[NSUserDefaultsstandardUserDefaults] setObject:@""forKey:@"xxx"];

[[NSUserDefaultsstandardUserDefaults] valueForKey:@"xxx"];

是无法正常在widget中读取到数据的。


所以,在初始化NSUserDefaults的时候,要这样做:

NSUserDefaults *userDefault=[[NSUserDefaultsalloc] initWithSuiteName:k_APP_GROUP_KEY];

    [userDefault setValue:dic forKey:@""];

    [userDefault synchronize];

这样初始化,存储数据之后,然后再在扩展的ViewDidLoad中以同样的方式去初始化并读取数据,才能正常的根宿主程序的数据进行互通。Group_Key就是在添加App Group的时候,所填写的Key的名字。


好了,看到这里,就应该可以去完成一个由NSUserdefaults实现数据共享给扩展程序的操作了,可以试试看。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值