[Swift] Doctuments 내의 JSON 파일 읽기와 쓰기

9655 단어 iOSSwiftXcodeJSONtech

개시하다


다음은 Doctements/디렉토리 내의 JSON 파일의 읽기, 쓰기에 대한 Swift 설명입니다.

컨디션

  • Xcode 12.5
  • Swift 5.4
  • [사전 준비] JSON 데이터를 저장할 구조체 정의


    struct Bookdata: Codable {
        var id: Int        //本のID
        var title: String  //本のタイトル
        var author: String //本の著者
        var publisher: String //本の出版社
        var comment: String //本のコメント
    }
    

    JSON 파일 읽기


    guard let dirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
             fatalError("フォルダURL取得エラー")
    }
    
    if !FileManager.default.fileExists(atPath: NSHomeDirectory() + "/Documents/" + "bookdata.json"){
        fatalError("JSONが存在しない")
    }
    
    let fileURL = dirURL.appendingPathComponent("bookdata.json")
    
    guard let data = try? Data(contentsOf: fileURL) else {
            fatalError("JSON読み込みエラー")
    }
         
    let decoder = JSONDecoder()
    guard let bookdata = try? decoder.decode([Bookdata].self, from: data) else {
        fatalError("JSONデコードエラー")
    }
        
    //bookdata[0].titleなどでとり出すことが可能
    

    JSON 파일 쓰기


    guard let dirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
        fatalError("フォルダURL取得エラー")
    }
    
    let fileURL = dirURL.appendingPathComponent("bookdata.json")
    
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted //JSONデータを整形する
    guard let jsonValue = try? encoder.encode(bookdata) else {
        fatalError("JSONエンコードエラー")
    }
     
    do {
        try jsonValue.write(to: fileURL)
    } catch {
        fatalError("JSON書き込みエラー")
    }
    

    좋은 웹페이지 즐겨찾기