Just a Computer Graphics Studio & My Life

過去App的資料是被保護在沙盒(Sandbox)之中,因此無法讓其它App來存取。現在Apple設計一個共享區域,在此區域可以讓不同的App來存取,只是這些App必須是同一個開發者呢!

在App間分享資料 (Share Data Between Apps)

在專案中的Capabilities中打開App Groups,接著創立一個App Groups,我這裡是設定group.happy.share,程式碼中會用到喔~

接下來要寫兩個專案,一個負責寫入另一個負責讀取,記得兩者皆要設定同一個App Groups喔!

很簡單地寫幾行程式碼就搞定!在此有兩種方法可以分享資料:

  1. 檔案共享
  2. 系統預設的plist檔資料共享

寫入部分


- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 共享方法一:檔案共享~寫入
    NSFileManager *fm = [NSFileManager defaultManager];
    NSURL *baseURL = [fm containerURLForSecurityApplicationGroupIdentifier:@"group.happy.share"];
    NSURL *url = [[NSURL alloc] initWithString:@"HappyShare.txt" relativeToURL:baseURL];
    NSString *string1 = @"快樂地過每一天~";
    [string1 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
    
    // 共享方法二:系統預設的plist檔資料共享~寫入
    NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:@"group.happy.share"];
    NSString *string2 = @"每一天都要成長快樂~";
    [ud setObject:string2 forKey:@"HappyShare"];
    [ud synchronize];
}

讀取部分


- (void)viewDidLoad {
    [super viewDidLoad];

    // 共享方法一:檔案共享~讀取
    NSFileManager *fm = [NSFileManager defaultManager];
    NSURL *baseURL = [fm containerURLForSecurityApplicationGroupIdentifier:@"group.happy.share"];
    NSURL *url = [[NSURL alloc] initWithString:@"HappyShare.txt" relativeToURL:baseURL];
    NSString *string1 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"string1: %@", string1);
    
    // 共享方法二:系統預設的plist檔資料共享~讀取
    NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:@"group.happy.share"];
    NSString *string2 = [ud valueForKey:@"HappyShare"];
    NSLog(@"string2: %@", string2);
}

先執行寫入,再執行讀取,就能在debug console看到以下結果:

string1: 快樂地過每一天~

string2: 每一天都要成長快樂~

如果懶得開兩個專案,就去GitHub下載我寫的專案吧~

參考:iOS 8程式設計實戰 – 205個快速上手的開發技巧。

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: