Thanks Quinn,
With current implementation.
yes, main app is in charge of writing, and extension is sort of read only, very rare edge case to write back.
the architecture like this:
app into background | special event occurred
--> load User defaults and write:
-----
write small set info to user defaults. // 5 pairs of key / value
NSMutableDictionary* sharedDefaults = [[NSMutableDictionary alloc] init];
NSDictionary *saved = [SharedInfoManager getVomoInfo];
if(saved != nil)
{
[sharedDefaults addEntriesFromDictionary:saved];
}
//
[sharedDefaults setObject: @"Value" forKey:ONEOF_SHARED_INFO_PROPERTY_KEYS];
[SharedInfoManager setVomoInfo:sharedDefaults];
-----
+ (NSDictionary *)sharedVomoInfo
{
return [SharedInfoManager getVomoInfo];
}
+ (NSDictionary *)getVomoInfo
{
return [self getSharedInfoWith:SHARED_VOMO_INFO];
}
+ (NSDictionary*)getSharedInfoWith:(NSString *)key
{
NSUserDefaults *userDefault = [SharedInfoManager getSharedInfo];
return [userDefault dictionaryForKey:key];
}
+ (NSUserDefaults*)getSharedInfo
{
return [[NSUserDefaults alloc] initWithSuiteName:@"group.com.myexample.project"];
}
+ (void)setVomoInfo:(NSDictionary *)info
{
[self setSharedInfo:SHARED_VOMO_INFO withValue:info];
}
+ (void)setSharedInfo:(NSString*) key withValue:(NSDictionary*)info
{
NSUserDefaults* defaults = [SharedInfoManager getSharedInfo];
[defaults setObject:info forKey:key];
[defaults synchronize];
}
if I am not mistaken, It could be something like
{
// return [self getSharedInfoWith:SHARED_VOMO_INFO];
NSData *data = [NSData dataWithContentsOfFile:path options:0 error:&error];
NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingAllowFragments
error:&error];
}
+ (void)setVomoInfo:(NSDictionary *)info
{
//[self setSharedInfo:SHARED_VOMO_INFO withValue:info];
NSData *dataFromDict = [NSJSONSerialization dataWithJSONObject:dict
options:nil
error:&error];
[NSData writeToURL:options:error:]
}
is it thread safe? again, much appreciated your help for this.
Topic:
App & System Services
SubTopic:
General
Tags: