아이폰 앱을 개발하면서 너무 다양한 기능에 놀랄때가 많습니다.
특히 모바일쪽 개발을 해온 저에게는 적용하고 싶었지만 '기기의 한계'라는 제약때문에 사용할 수 없었던
프로그래밍들이
무척 많았기 때문에 더 크게 느껴지는 부분들이 많죠.

sqlite라는게 있습니다. db입니다. 모바일에서는 사용할수 없었던 sql를 사용하게 해주더군요..
서버작업할 때나 가끔 쓰던 Ms-sql, My-sql을 클라이언트 작업에서 사용할 수 있다니 놀라울 뿐입니다.

저는 sqlite를 쉽게 사용하기 위해서 외부의 툴을 가지고 생성을 한뒤에
아이폰프로젝트에 추가 해서 사용하는 방식을 사용하였습니다. 기본적으로 사용하는 데이타가 무척 많은 편이라서
앱 내에서 생성하기가 곤란 했습니다. 문제는 이렇게 리소스로 추가한 sqlite화일은 읽기만 가능하다는거죠.

처음 기획때는 읽기만 하면 되어서 별 문제 없었는데..개발이라는게..항상..

리소스에 저장된 sqlite화일을 쓰기도 가능하도록 Document 폴더로 옮기는 함수입니다.


// 리소스폴더에 저장한 SQLite를 조작가능하도록 Document 폴더로 옮긴다.
-(BOOL)copySqliteData:(NSString)srcFile toFile:(NSString)trgFile
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
   
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [[paths objectAtIndex:0] stringByAppendingString:trgFile];
   
    BOOL sucess = [fileManager fileExistsAtPath:documentPath];
   
    if(!sucess)
    {   
        NSString *resoucePath = [[[NSBundle mainBundle]resourcePath] stringByAppendingString:srcFile];
        sucess =[fileManager copyItemAtPath:resoucePath toPath:documentPath error:&error];
    }  
    return sucess;

}


그럼 오늘은 여기까지..

To be continued -夜昧-

반응형