비전공자 개발일기

Decoding Error(The data couldn’t be read because it is missing) 본문

SWIFT/(SWIFT || Xcode)Error

Decoding Error(The data couldn’t be read because it is missing)

HiroDaegu 2023. 1. 3. 17:32
728x90
SMALL

개인 프로젝트를 위해 해당 어플을 Firebase에 연동하고,
Firebase에 저장한 DB(Realtime Database)들을 불러오는 과정에서
아래와 같은 에러가 발생

ERROR JSON Parsing The data couldn’t be read because it is missing.

해결 과정

1. value부터 값들을 잘 불러오는 지 점검 -> hospitalData가 출력이 안되는 것 확인

        self.ref = Database.database().reference()
        
        self.ref.observe(.value) { snapshot in
            guard let value = snapshot.value as? [String: [String: Any]] else { return }
			// print(value)
            do {
                let jsonData = try JSONSerialization.data(withJSONObject: value)
			// print(jsonData)
                let hospitalData = try JSONDecoder().decode([String: Hospital].self, from: jsonData)
			// print(hospitalData)
                let hosList = Array(hospitalData.values)
                self.hospitalList = hosList.sorted { $0.id < $1.id }
                
                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            } catch let error {
            	print("ERROR JSON Parsing \(error.localizedDescription)")
             // print("ERROR JSON Parsing \(error)")
            }
        }

 

2. 구체적인 에러를 확인하기 위해
catch 부분의 error.localizedDescription을 error로 변경해서 확인

keyNotFound(CodingKeys(stringValue: "mediDepartment", intValue: nil), 
Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "List17", intValue: nil)], 
debugDescription: "No value associated with key CodingKeys(stringValue: \"mediDepartment\", intValue: nil) (\"mediDepartment\").", underlyingError: nil))

Firebase에 등록되어 있는 Key와 어플 내 구조체의 변수명과 일치하지 않아서 발생한 에러

Firebase 내 Realtime DB

결론, 오타로 인한 에러 -> 변수명을 통일시켜서 해결

728x90
LIST