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
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];
}
}
}