IOS [NSUserDefaults alloc] initWithSuiteName:@" group.com.xxx.xxx"错误

时间:2016-11-20 14:02:36

标签: ios nsuserdefaults

您好我为我的AppGroup创建NSUserDefaults的子类,以便在IOS应用和watchOs扩展之间共享数据

我正在使用此

#define APP_GROUP_ID @"group.com.xxxx.xxx"

- (instancetype)init {
    self = [super init];

    if (self) {
        self.userDefaults = [[NSUserDefaults alloc]initWithSuiteName:APP_GROUP_ID];
    }
    return self;
}

但是当我运行应用程序时,控制台中出现错误

[User Defaults] Failed to read values in CFPrefsPlistSource<0x1740f5600> (Domain: group.com.xxx.xxx, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null)): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd

我已尝试搜索此错误,并找到一个将TeamID添加到App_ID定义。但似乎不是正确的。

任何人都有同样的问题吗?我们怎么能这样呢?帮助非常感谢。谢谢!

更新我的.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en_US</string>
    <key>CFBundleDisplayName</key>
    <string>SingPost</string>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.8.8</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb1540614276180366</string>
            </array>
            <key>Item 0</key>
            <string>fb1540614276180366</string>
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>1.8.8</string>
    <key>FacebookAppID</key>
    <string>1540614276180366</string>
    <key>FacebookDisplayName</key>
    <string>Singpost</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
            <key>facebook.com</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
            <key>mobile.singpost.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>mysam.sg</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>prdesb1.singpost.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    <key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) camera use</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationUsageDescription</key>
    <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) location use</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) photo use</string>
    <key>UIAppFonts</key>
    <array>
        <string>OpenSans-Regular.ttf</string>
        <string>OpenSans-Bold.ttf</string>
        <string>OpenSans-Semibold.ttf</string>
        <string>OpenSans-Light.ttf</string>
        <string>OpenSans-LightItalic.ttf</string>
    </array>
    <key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UIRequiresFullScreen</key>
    <true/>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fbapi20130214</string>
        <string>fbapi20130410</string>
        <string>fbapi20130702</string>
        <string>fbapi20131010</string>
        <string>fbapi20131219</string>
        <string>fbapi20140410</string>
        <string>fbapi20140116</string>
        <string>fbapi20150313</string>
        <string>fbapi20150629</string>
        <string>fbauth</string>
        <string>fbauth2</string>
        <string>fb-messenger-api20140430</string>
    </array>
    <key>Fabric</key>
    <dict>
        <key>APIKey</key>
        <string>3208dc242f01e150e8ca060fbee0e5a8696532e7</string>
        <key>Kits</key>
        <array>
            <dict>
                <key>KitInfo</key>
                <dict/>
                <key>KitName</key>
                <string>Crashlytics</string>
            </dict>
        </array>
    </dict>
    <key>FirebaseAppDelegateProxyEnabled</key>
    <false/>
</dict>
</plist>

我的权利

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.SingPost.SingPostMobile</string>
    </array>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)group.com.SingPost.SingPostMobile</string>
    </array>
</dict>
</plist>

我更新了所有userdefault.h和.m

#import <Foundation/Foundation.h>

@interface UserDefaultsManager : NSUserDefaults

+ (instancetype)sharedInstance;

- (BOOL)setLastTrackingNumber:(NSString *)trackingNumber;
- (NSString *)getLastTrackingNumber;

- (BOOL)setNotificationStatus:(BOOL)status;
- (BOOL)getNotificationStatus;

@end



#import "UserDefaultsManager.h"

#define APP_GROUP_ID @"group.com.SingPost.SingPostMobile";


#define LAST_TRACKING_NUMBER_KEY @"LAST_TRACKING_NUMBER"
#define NOTIFICATION_STATUS_KEY @"NOTIFICATION_STATUS"

@interface UserDefaultsManager()
@property (strong, nonatomic) NSUserDefaults *userDefaults;
@end

@implementation UserDefaultsManager

+ (instancetype)sharedInstance {
    static dispatch_once_t pred;
    static id __singleton = nil;
    dispatch_once(&pred, ^{ __singleton = [[self alloc] init]; });
    return __singleton;
}

- (instancetype)init {
    self = [super init];

    if (self) {
        self.userDefaults = [[NSUserDefaults alloc]initWithSuiteName:APP_GROUP_ID];
    }
    return self;
}

- (BOOL)setLastTrackingNumber:(NSString *)trackingNumber {

    [self.userDefaults setObject:trackingNumber forKey:LAST_TRACKING_NUMBER_KEY];
    return [self.userDefaults synchronize];
}

- (NSString *)getLastTrackingNumber {
    return [self.userDefaults objectForKey:LAST_TRACKING_NUMBER_KEY];
}

- (BOOL)setNotificationStatus:(BOOL)status {
    [self.userDefaults setBool:status forKey:NOTIFICATION_STATUS_KEY];
    return [self synchronize];
}

- (BOOL)getNotificationStatus {
    return [self.userDefaults boolForKey:NOTIFICATION_STATUS_KEY];
}

@end

0 个答案:

没有答案