투케이2K

421. (ios/swift5) [Firebase RealDatabase] 파이어베이스 데이터베이스 에 Set 데이터 덮어 쓰기 수행 본문

IOS

421. (ios/swift5) [Firebase RealDatabase] 파이어베이스 데이터베이스 에 Set 데이터 덮어 쓰기 수행

투케이2K 2024. 3. 20. 20:29

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 
 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [SEARCH FAST] : [Observable] : [Write] : [기본] 데이터베이스 SET 쓰기
    // -----------------------------------------------------------------------------------------
    func observableSetWriteDatabase(table:String, json:String, completion: @escaping (Bool)->()) {
        
        /*
        // -----------------------------------------
        [observableSetWriteDatabase 메소드 설명]
        // -----------------------------------------
        1. [기본] 데이터베이스 SET 쓰기
        // -----------------------------------------
        2. 호출 방법 :
         
         DispatchQueue.main.async { // [비동기 요청]
             
             // [파이어베이스 테이블 명칭]
             let tableName = "testUser"
             
             // [JSON 생성]
             var dic : Dictionary<String, Any> = ["name":"투케이", "age":29]
             var json = C_Util().dic_To_JsonObject_String(_dicData: dic)

             // [메소드 호출]
             C_FirebaseRealDatabase().observableSetWriteDatabase(table:tableName, json:json){(result) in
                 
                 S_Log._F_(description: "[기본] 데이터베이스 SET 쓰기", data: ["\(result)"])
                 
             }
             
         }
         
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 수행", data: [
                "table :: \(table)",
                "json :: \(json)"
            ])
            
            
            // [리턴 변수 선언]
            var returnData = false
            
            
            // [널 체크]
            if C_Util().stringNotNull(str: table) == true && C_Util().stringNotNull(str: json) == true {
                
                // [파이어베이스 인스턴스 취득]
                let ref = Database.database().reference()
                
                // [파이어베이스 set 쓰기]
                ref.child("\(table)").setValue("\(json)", withCompletionBlock: { (error, ref) in
                    
                    if let err = error {
                        S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 에러", data: [
                            "ERROR :: \(err.localizedDescription)"
                        ])
                        
                        // [콜백 반환]
                        completion(returnData)
                        return
                    }
                    
                    // [리턴 결과 반환]
                    returnData = true
                    
                    S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 성공", data: nil)
                    
                    // [콜백 반환]
                    completion(returnData)
                    
                })
            }
            else {
                S_Log._F_(description: C_FirebaseRealDatabase.ACTIVITY_NAME + " : [Firebase] : [Write] : [기본] 데이터베이스 SET 쓰기 에러", data: [
                    "ERROR :: Input Data Is Null"
                ])
                
                // [콜백 반환]
                completion(returnData)
            }
            
        }
    }
 

[결과 출력]

 

반응형
Comments