iOS 開發之Widget的開發及使用(下),ioswidget

來源:互聯網
上載者:User

iOS 開發之Widget的開發及使用(下),ioswidget
在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實現資料共用給擴充程式的操作了,可以試試看。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.