* 파일 처리
- 아이폰에서 참조하게 되는 폴더들 : Application – Documents, Library, tmp, Caches, Preferences, Application.app
- 위의 폴더들이 존재하지만 그 중 Documents 폴더만 우리가 사용할 수 있다
- app는 번들 디렉토리이다. 실행 중에는 이 폴더의 내용을 변경할 수 없다
- Library 폴더 안에는 다시 Caches와 Preference 폴더가 존재하며 Preference 폴더 안에 NSUserDefaults가 생성하는 .plist 파일이 존재한다
- Preference는 ITunes에 의해 백업된다
- Caches는 애플리케이션에 의존적이어야 하는 파일을 저장
- tmp는 지속적으로 저장되지 않아도 되는 파일을 저장
* 특별한 용도의 파일
- Default.png 파일은 애플리케이션이 로드될 때 자동으로 호출되는 그림 파일이다
- 최상위 폴더에 넣어두면 자동으로 호출되어 출력된다
(주로 로딩시에 로고를 보여주는 용도로 사용됨)
- 이 파일은 320x480 사이즈를 권장한다
- ~~~info.plist 파일 역시 번들 정보를 저장하고 있는 특별 용도의 파일이다
- 이 2개의 파일은 위치와 이름이 반드시 정해진 대로 되어 있어야 하며 바꿀 수 없다
* 파일에 읽기/쓰기
- Documents 폴더의 경로 얻기
NSArray * 배열명 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *경로명 = [배열명 objectAtIndex:0];
- 현재 프로젝트의 번들 경로 얻기
[[NSBundle mainBundle]bundlePath];
- NSString, NSDictionary, NSData, NSArray, NSDate의 파일로부터 읽기와 쓰기
파일로부터 읽기
-(id)initWithContentsOfFile:(NSString *)path;
URL로 부터 읽기
-(id)initWithContentsOfURL:(NSURL*)url;
파일에 쓰기
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag;
URL에 쓰기
-(BOOL)writeToFile:(NSURL *)url atomically:(BOOL)flag;
* 아카이브
- 프로그램에서 사용되는 Object를 속성 값이나 관계를 포함에서 파일에 바이트 배열로 저장해 두는 것을 archive라고 한다
- Object를 바이트 배열로 저장하는 것을 archive라고 하고 반대되는 작업을 unarchive라고 한
다
- 객체를 archive하기 위해서는 NSCoding이라는 프로토콜을 따라야 한다
. 이 규칙을 따르게 되면 archive가 가능하고 NSString이나 NSDictionary 등은 이 프로토콜을 이미 적용해 두고 있다
- NSArray나 NSDictionary 또는 NSData 등의 자료구조들은 description 메서드를 호출하면 데이터들을 propertyList로 만들어서 출력해준다. 이 때 문자열은 “”로 묶어주며 영문자와 숫자로만 구성된 경우 “”를 생략해도 된다
- 데이터는 < >로 16진수로 묶어서 표현하게 된다
- 저장되는 구조는 description을 확인하면 되고 파일에 저장되어 있는 경우에 읽어 올 수도 있다. 이 때 이 파일들은 XML 구조로 저장되며 수정이 불가능한 객체로 리턴되므로 주의해야 한
다
* 일반 클래스 아카이브
- 일반 오브젝트를 아카이브 할 때는 NSCoding 프로토콜에 정의되어 있는 encodeWithCoder:와 initWithCoder: 메서드를 정의하면 된다
- 메서드의 원형
-(void)encodeWithCoder:(NSCoder *)encoder
이 메서드의 안에서 encoder가 아카이브 할 실제 멤버들을 직접 인코딩하면 된다
-(id) initWithCoder:(NSCoder *)decoder
이 메서드의 안에서 decoder가 언아카이브 할 실제 멤버들을 직접 디코딩하면 된다
- 기본 데이터 타입에 대한 인코드와 디코드 메서드
encodeBool:forKey decodeBool:forKey
encodeInt:forKey decodeInt:forKey
encodeInt32:forKey decodeInt32:forKey
encodeInt64:forKey decodeInt64:forKey
encodeFloat:forKey decodeFloat:forKey
encodeDouble:forKey decodeDouble:forKey
'프로그래밍 > Objective-C' 카테고리의 다른 글
중앙정보학원 아이폰과정 19일차 - 2010년 7월 29일 (0) | 2010.07.29 |
---|---|
중앙정보학원 아이폰과정 18일차 - 2010년 7월 28일 (0) | 2010.07.28 |
중앙정보학원 아이폰과정 13일차 - 2010년 7월 21일 (0) | 2010.07.21 |
아이폰 OS 개발 자료 총정리 (0) | 2010.07.20 |
#pragma mark로 코드 쉽게 구분하기 (0) | 2010.07.20 |