아이폰 "파일"에 데이터를 저장하는 방법이라고 보면 된다.
프로젝트 생성은 기존에 생성하는 것과 같이 진행하면 되고 info.plist는 추가해야할 것만 보고 간단히 넘어가겠다. 이 후 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에 저장된 아이템을 관리하는 데도 쓰인다 하니 이 부분을 좀 더 알아봐야 될 것 같다.