2016-07-19 3 views
9

Firebase 데이터베이스의 여러 위치에서 동시에 데이터를 삭제하려고합니다.UpdateChildValues를 사용하여 Firebase에서 삭제

Firebase docs 상태 :

"The simplest way to delete data is to call removeValue on a reference to the location of that data. You can also delete by specifying nil as the value for another write operation such as setValue or updateChildValues. You can use this technique with updateChildValues to delete multiple children in a single API call."

내 코드는 네 가지 경로 문자열

let childUpdates = [path1 : nil, 
        path2 : nil, 
        path3 : nil, 
        path4 : nil] 

    ref.updateChildValues(childUpdates) 

,하지만 난 오류 얻을 :

"Type of expression is ambiguous without more context."

내가 이런 가정 줄을 nil 값으로 인해 nil을 다른 것으로 대체하면 (Int와 같이) 오류가 사라집니다.

updateChildValues를 사용하여 Firebase에서 데이터를 삭제하는 올바른 방법은 무엇입니까? Firebase의 removeValue() 함수와 비슷한 방식으로 작동하기를 원합니다. 우리가 이것을하는 이유는 한 번의 호출로 여러 곳에서 제거 할 수 있기 때문입니다.

답변

40

로 변경 그래서 여기에 문제가

ref.updateChildValues(childUpdates) 

이 필요하다는 점입니다! nil의 될 수 없습니다 당신이 AnyObject이 때문에

let childUpdates = [path1 : NSNull(), 
        path2 : NSNull(), 
        path3 : NSNull(), 
        path4 : NSNull()] 

을 할 수

하지만 (즉, 당신은 전무 할 수있는 옵션 인 AnyObject을? 사용할 수 없습니다)! 이제는 NSNull() 객체 (nil이 아님)이고 Firebase는 NSNull이 nil 값임을 알고 있습니다.

+0

내 하루를 절약하십시오 –

+1

정말 고마워요! 이것은 확실히 Firebase 문서에 있어야하므로 매우 실망 스럽습니다! – Crashalot

1

이 오류는 귀하가 제공 한 첫 번째 줄에서 비롯된 것 같습니다. 사전의 유형을 지정해야합니다. [! : AnyObject 문자열] updateChildValues에 매개 변수 및 AnyObject 그래서

let childUpdates: [String : AnyObject?] = [path1: nil, path2: nil,...] 
+0

불행히도 작동하지 않습니다. 사전의 예상 유형은 [NSObject : AnyObject]입니다. 사전이 해당 유형이 아닌 경우 updateChildValues ​​함수는 오류를 발생시킵니다. 우리는 NSObjects에 대한 경로를 변경하려고 시도했지만 AnyObject의 nil 값으로 여전히 불평하고 있습니다. 우리가 아무 가치도 넣을 수없는 것처럼 보이지만, 그들은 우리가 그렇게 생각할 수있는 방법이있을 수 있다고 그들의 문서에서 말할 수 있습니다. –

+0

빈 문자열'' "을 사용하면 Firebase이 제거 할 것이라고 생각합니다. 그것을 시도하십시오. – rigdonmr

+1

그냥 경로의 값을 빈 문자열 –

관련 문제