Mac sandbox created but no NSUserDefaults plist

前端 未结 5 1747
一个人的身影
一个人的身影 2020-12-06 06:34

I\'m trying to track down some issues arising from sandbox creation. Under multiple circumstances it appears that an NSUserDefaults .plist file is not created in Data/Libra

5条回答
  •  我在风中等你
    2020-12-06 07:15

    After spending a ton of time found freaking simple solution:

    - (void)fixDefaultsIfNeeded{
        NSArray *domains = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
        //File should be in library
        NSString *libraryPath = [domains firstObject];
        if (libraryPath) {
            NSString *preferensesPath = [libraryPath stringByAppendingPathComponent:@"Preferences"];
    
            //Defaults file name similar to bundle identifier
            NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
    
            //Add correct extension
            NSString *defaultsName = [bundleIdentifier stringByAppendingString:@".plist"];
    
            NSString *defaultsPath = [preferensesPath stringByAppendingPathComponent:defaultsName];
    
            NSFileManager *manager = [NSFileManager defaultManager];
    
            if (![manager fileExistsAtPath:defaultsPath]) {
                //Create to fix issues
                [manager createFileAtPath:defaultsPath contents:nil attributes:nil];
    
                //And restart defaults at the end
                [NSUserDefaults resetStandardUserDefaults];
                [[NSUserDefaults standardUserDefaults] synchronize];
            }
        }
    }
    

提交回复
热议问题