오늘은 데이터 넣고 읽고 지울 수 있는 메서드를 만들었습니다.
데이터 수정 메서드는 오류가 있기 때문에 수정하는 중 ^^
// DataManager.swift
func createUserData(user: UserData) {
let userCollection = db.collection("Users")
let query = userCollection.whereField("ID", isEqualTo: user.ID)
query.getDocuments{ (snapshot, error) in
guard let captured = snapshot, !captured.isEmpty else {
self.db.collection("Users").document().setData([
"ID": user.ID,
"Password": user.password,
"Name": user.name,
"PhoneNumber": user.phoneNumber
])
UserDefaults.standard.set(user.ID, forKey: "ID")
UserDefaults.standard.set(user.password, forKey: "Password")
print("회원가입 완료")
return
}
print("이미 같은 ID로 회원가입이 되어있음")
}
}
func readUserData(userID: String) {
let query = db.collection("Users").whereField("ID", isEqualTo: userID)
query.getDocuments { (snapshot, error) in
guard let snapshot = snapshot, !snapshot.isEmpty else {
// 데이터 없을 때
print("사용자의 ID로 된 데이터가 없습니다.")
return
}
// 데이터 있을 때
print("데이터를 읽어옵니다.")
for document in snapshot.documents {
print("\(document.documentID) => \(document.data())")
}
}
}
func deleteUserData(userID: String) {
let userCollection = db.collection("Users")
let query = userCollection.whereField("ID", isEqualTo: userID)
query.getDocuments{ (snapshot, error) in
guard let snapshot = snapshot, !snapshot.isEmpty else {
print("데이터가 없어용")
return
}
let ref = userCollection.document(snapshot.documents[0].documentID)
ref.delete()
print("데이터 삭제 완료")
}
}
Firebase 공식 문서에는 매 연산마다 try
키워드와 await
키워드를 사용해서 비동기, 에러 처리를 해줘야 하는 것으로 나오는데, 어제의 TIL에서 작성했듯이 Thread 1: EXC_BAD_ACCESS
에러를 해결할 지식이 부족하기 때문에 그냥 메서드를 구성했습니다...
그래도 작동을 잘 하는 것이면 된게 아닐까요?! ^^ 내일은 수정하는 메서드 완성한 후, 프로젝트 와이어프레임을 참고해서 각 화면에서 DataManager
의 메서드를 사용하기 쉽도록 구성하도록 하겠습니다!