250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- keyframes
- php
- SWIFT
- iOS 개발자
- hover
- button
- 비전공 개발자
- html5
- 프론트엔드
- react
- effect
- xcode
- image
- 개발자
- front-end
- 자바스크립트
- IOS
- ipad
- javascript
- iPhone
- css3
- HTML
- 비전공자
- jQuery
- MAC
- 애니메이션
- Animation
- 백엔드
- CSS
- 풀스택
Archives
- Today
- Total
비전공자 개발일기
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:32728x90
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와 어플 내 구조체의 변수명과 일치하지 않아서 발생한 에러
결론, 오타로 인한 에러 -> 변수명을 통일시켜서 해결
728x90
LIST