'multivalue'에 해당되는 글 1건

  1. 2012.05.04 [setting.bundle] multivalue 동적으로 추가하기

세팅 번들의 멀티밸류 값이 고정되어 있는 것이 아니라 사용자 필요에 의해 변경될 경우가 있다. 

나의 경우에는 길이나 넓이 단위를 사용자가 추가할 경우가 있는데, 이럴 경우 세팅 번들의 멀티 밸류항목에도 추가 시켜줘야하는 상황이 발생한다.  


hedar file  정의 : userDefaultSet.h

#import <Foundation/Foundation.h>


@interface UserDefaultSet : NSObject

{

    NSString *_strSettingBundlePath;

    NSMutableDictionary *_rootPList;

    

}


-(void) saveSettings;

-(void) loadSettings;


-(BOOL) setUserDefaultMultiValue:(NSString *)strID key:(id)keyArray value:(id)valueArray;

-(void) saveUserDefaultSet;


@end


 source file :UserDefaultSet.m

#import "UserDefaultSet.h"


@implementation UserDefaultSet


-(id) init

{

    if(self = [super init])

    {

        NSString* settingsBundle = [[[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"] stringByAppendingPathComponent:@"Root.plist"];

        _strSettingBundlePath = [[NSString alloc] initWithFormat:@"%@",settingsBundle];

        

        NSDictionary *settingsPropertyList = [NSDictionary dictionaryWithContentsOfFile:_strSettingBundlePath];

        _rootPList = [[NSMutableDictionary alloc] initWithDictionary:settingsPropertyList];

        

    }    

    return self;       

}


-(void) dealloc

{

    [_strSettingBundlePath release];

    [_rootPList release];

    

    [super dealloc];

 }


-(void) saveSettings

{

    

}

-(void) loadSettings

{

    

}


- (BOOL) setUserDefaultMultiValue:(NSString *)strID key:(id)keyArray value:(id)valueArray 

{

    NSMutableArray* specifiers = [_rootPList objectForKey:@"PreferenceSpecifiers"];

//    NSMutableDictionary *multiValueSpecifier = [[NSMutableDictionary alloc] init];

    NSDictionary *multiValueSpecifier;    

    

    for (NSDictionary *specifier in specifiers)

    {

        if ([[specifier objectForKey:@"Key"] isEqualToString:strID] == YES &&

            [[specifier objectForKey:@"Type"] isEqualToString:@"PSMultiValueSpecifier"] == YES)

        {

            multiValueSpecifier = specifier;    

            break;

        }

    }

    

    if (multiValueSpecifier == nil)

        return FALSE;

    

    [multiValueSpecifier setValue:valueArray forKey:@"Values"];

    [multiValueSpecifier setValue:keyArray forKey:@"Titles"];

    

    NSLog(@"=== rootPlist:%@", _rootPList);    

    

    return [_rootPList writeToFile:_strSettingBundlePath atomically:YES];    

}


'아이폰개발 > Tip &amp; Tech' 카테고리의 다른 글

[XCode] bounds와 fame의 차이  (0) 2012.02.10
mainWindow.xib 사용하지 않고 어플 개발하기  (0) 2011.12.07
window와 _window의 차이  (0) 2011.10.13
FlipView구현 및 Toolbar 넣기  (0) 2011.10.13
NS Collection  (0) 2011.08.21
Posted by 꿈을펼쳐라
,