[iOS] FileManager

PM077·2022년 11월 16일
0

iOS

목록 보기
5/21

개요

FileManager 공식문서

아이폰 "파일"에 데이터를 저장하는 방법이라고 보면 된다.

기본 절차

  1. 프로젝트 생성
  2. info.plist 권한 추가
  3. FileManager 생성

프로젝트 생성은 기존에 생성하는 것과 같이 진행하면 되고 info.plist는 추가해야할 것만 보고 간단히 넘어가겠다. 이 후 FileManager에 대해 알아보겠다.


info.plist 권한 추가

위의 사진과 같이

  • Application support iTunes file sharing
  • Supports opening documents in place
    를 추가해준 후 YES로 바꿔줘야만 뒤에 실습할 때 파일이 저장된다.

FileManager 실습

위와 같이 textfield에 파일이름이나 디렉토리 이름을 입력하면 해당 파일 및 디렉토리가 생성되는 어플리케이션을 제작해보았다.

파일 만들기

// 파일 만들기 *클릭*
    @IBAction func makeFile(_ sender: Any) {
        print("click")
//파일 만드는법
        let fileNameIn = fileName.text! //텍스트필드 값 받아오는 것이니 필수 X
        let fileManager = FileManager.default //파일매니저를 fileManager에 저장한다 
        let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] //이 형식으로 다운받으면 "파일"로 저장이 된다. 즉, URL을 지정해주는 것이다.
        let fileURL = documentsURL.appendingPathComponent("\(fileNameIn).txt") //파일 이름을 저장해주는 곳
        let myTextString = NSString(string: "Hello World!") //파일 내부의 내용을 받는 곳이다.
        try? myTextString.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8.rawValue)
    }

위의 내용의 주석을 따라하면 쉽게 만들 수 있다. 여기서 주의해야할 점은
1. 파일을 만들 때 원하는 확장자를 꼭 입력해주자
정도인 것 같다

디렉토리 만들기

    @IBAction func makeDirectory(_ sender: Any) {
        //디렉토리 만드는법
        let directoryNameIn = directoryName.text! // 택스트필드에서 값을 받아오는 것이니 필수 X
        let fileManager = FileManager.default //파일매니저를 선언해준다
        let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] //디렉토리 저장할 URL 지정
        let filePath =  documentsURL.appendingPathComponent("\(directoryNameIn)") //디렉토리 이름을 정해줘서 만든다.
            if !fileManager.fileExists(atPath: filePath.path) { //여기서 파일이 기존에 없으면 만들어 준다
                do {
                    try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
                } catch {
                    NSLog("Couldn't create document directory")
                } //try-catch문으로 path가 없으면 만들 수 없다는 로그 찍히게끔 프로그래밍
            }
    }

위의 내용의 주석을 따라하면 쉽게 만들 수 있다.


사용하는 곳

우선 협업을 하게 된다면 FileManager보다는 백엔드 개발자 분들이 만들어 준 데이터를 가져오는 것이 주가 되기에 아이폰 내부의 DB는 사용을 안할 수 도 있다. 해봤자 UserDefaults 정도? 하지만 현재 FileManager로 iCloud에 저장된 아이템을 관리하는 데도 쓰인다 하니 이 부분을 좀 더 알아봐야 될 것 같다.

ETC

전체 코드

profile
PM/PO

0개의 댓글