[IOS 개발] NSArray, NSDictionary 데이터 저장

6209 단어 IOS 개발
데이터를 저장하려면
1. 데이터를 저장할 경로를 새로 만듭니다.
2. 데이터를 해당 경로에 쓰기
기본 함수 소개:
①NSString * NSHomeDirectory ( void );
반환 값은 홈 디렉터리입니다.IOS에서 해당 해에 프로그램을 연 샌드박스의 홈 디렉토리를 나타냅니다.
②NSArray * NSSearchPathForDirectoriesInDomains ( NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde );
반환 값: 현재 디렉터리를 저장하는 문자열 그룹입니다.
첫 번째 매개변수 유형: NSSearchPathDirectory는 찾으려는 디렉토리를 나타냅니다.
https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/index.html#//apple_ref/doc/c_ref/NSSearchPathDirectory
두 번째 매개변수 유형: NSSearchPathDomainMask는 검색 범위를 지정하는 루트 디렉토리입니다.
[objc]  view plain copy
enum {  
   NSUserDomainMask  = 1,  
   NSLocalDomainMask  = 2,  
   NSNetworkDomainMask  = 4,  
   NSSystemDomainMask  = 8,  
   NSAllDomainsMask  = 0x0ffff ,  
};  
typedef NSUInteger  NSSearchPathDomainMask;  
세 번째 매개변수 유형: BOOL은 디렉토리의 물결 기호를 확장할지 여부를 나타냅니다. 일반적으로 YES입니다.
③-(NSString *)stringByAppendingPathComponent:(NSString *) aString
이 함수는 문자열을 연결하는 데 사용되며 파일 경로에만 적용됩니다.
파일 이름이 "AyaseEli.plist"인 경우 해당 경로에 추가하면 다른 표현이 나타납니다.
"/tmp/"---------->/tmp/AyaseEli.plist
"/tmp"---------->/tmp/AyaseEli.plist
"/"---------->/AyaseEli.plist
""---------> AyaseEli.plist
④-(BOOL)writeToFile:(NSString *) path  atomically:(BOOL) atomically
반환값: YES는 쓰기가 성공했음을 나타냅니다. 그렇지 않으면 NO입니다.
첫 번째 매개변수: (NSString*)path ,path + 。(BOOL)atomically YES 。 , path 。 。
예: plist에 NSDictionary 및 NSArray 쓰기
[objc]  view plain copy
/* 
인터페이스에 버튼 2개 추가  
1) NSArray 중 하나를 문서 디렉토리에 기록2) 문서 디렉토리에 NSDictionary 쓰기   
파일에 쓰기 단계:  1.파일 경로 확인 2.파일에 컨텐츠 쓰기  
그러나 plist 파일에 쓰기에는 데이터 형식에 제한이 있습니다: NSInteger, CGFloat, NSString, NSDate  */  
  
- (void)viewDidLoad  
{  
    [super viewDidLoad];  
      
    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
    [button1 setFrame:CGRectMake(110, 100, 100, 40)];  
[button1 setTitle:@ 배열 forState: UIControlStateNormal];  
    [button1 addTarget:self action:@selector(writeArray) forControlEvents:UIControlEventTouchUpInside];  
    [self.view addSubview:button1];  
      
    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
    [button2 setFrame:CGRectMake(110, 200, 100, 40)];  
[button2 setTitle: @ 사전 forState: UIControlStateNormal];  
    [button2 addTarget:self action:@selector(writeDict) forControlEvents:UIControlEventTouchUpInside];  
    [self.view addSubview:button2];  
}  
  
#pragma mark - Actions  
- (void)writeArray  
{  
NSLog(@ 쓰기 배열);  
    // 1.배열 정의    NSArray *array = @[@1, @2, @3, @4];  
    // 2.쓸 위치 결정    NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *doc = documents[0];  
      
    NSString *path = [doc stringByAppendingPathComponent:@"array.plist"];  
      
    NSLog(@"%@", doc);  
      
    // 3.쓰기 배열    [array writeToFile:path atomically:YES];  
      
    // 4.문자열 배열 쓰기     NSMutableArray *strArray = [NSMutableArray arrayWithCapacity:20];  
    for (NSInteger i = 0; i 20; i++) {  
        NSString *text = [NSString stringWithFormat:@"itcast-%d", arc4random_uniform(10000)];  
        [strArray addObject:text];  
    }  
      
    NSString *strPath = [doc stringByAppendingPathComponent:@"str.plist"];  
    [strArray writeToFile:strPath atomically:YES];  
}  
  
- (void)writeDict  
{  
NSLog(@ 사전 쓰기);  
      
    // 1.실례화 사전    NSMutableDictionary *dict = [NSMutableDictionary dictionary];  
    for (NSInteger i = 0; i 20; i++) {  
        NSString *keyName = [NSString stringWithFormat:@"key-%02d", i];  
          
        NSMutableArray *array = [NSMutableArray array];  
          
        NSInteger rnd = arc4random_uniform(10) + 5;  
        for (NSInteger j = 0; j 
            NSString *text = [NSString stringWithFormat:@"itcast-%d", arc4random_uniform(10000)];  
              
            [array addObject:text];  
        }  
          
        [dict setValue:array forKey:keyName];  
    }  
  
    // 2.파일 쓰기    NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *path = [documents[0] stringByAppendingPathComponent:@"dict.plist"];  
  
    [dict writeToFile:path atomically:YES];  
}  

좋은 웹페이지 즐겨찾기