NSUserDefault with App Group is not working in iOS

2019-02-24 23:26发布

问题:

I have to save Boolean Value to NSUserDefault in my App with custom keyboard extension and share with App Group.

My Code is worked in iOS 8 Beta1.

self.defaults = [NSUserDefaults standardUserDefaults];

if([self.defaults boolForKey:@"BlackKey"])
    {
        NSLog(@"Black");
    }

    else
    {
        NSLog(@"White");
    }

But Not in iOS 8 Beta3. When i retrieve Boolean value from NSUserDefault , it's return nothing and i can't load from custom keyboard extension.

I have also tried with initWithSuiteName in NSUserDefault. Am i only one for that problem or bugs of iOS 8 Beta3?

回答1:

A few probable solutions are:

  1. Your app group is not setup correctly, or you are not using the correct group identifier with initWithSuiteName:

  2. You have not enabled network access for your keyboard. This document states the following when you have network access disabled for your keyboard (default behavior):

    No shared container with containing app

  3. It's a bug.



回答2:

Try using

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"BlackKey"];

when you save and read it by using this code:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"BlackKey"]) {
    NSLog(@"Black");
}

else
{
    NSLog(@"White");
}

or if you already done so, then it can be bug, and Xcode 6 beta versions also have other bugs so it's safer to try in Xcode 5 or older.