Firebase 쿼리에서 결과를 검색 할 수 있지만이를 사전으로 검색하여 tableView를 채우는 데 문제가 있습니다. 저는 여기에 쿼리 결과를 저장하고있어 방법은 다음과 같습니다파이어베이스 사전에서 결과를 얻으시겠습니까?
var invites: Array<FIRDataSnapshot> = []
func getAlerts(){
let invitesRef = self.rootRef.child("invites")
let query = invitesRef.queryOrderedByChild("invitee").queryEqualToValue(currentUser?.uid)
query.observeEventType(.Value, withBlock: { snapshot in
self.invites.append(snapshot)
print(self.invites)
self.tableView.reloadData()
})
}
인쇄 self.invites는 다음 반환
[Snap (invites) {
"-KKQWErkyuehmbxom8NO" = {
invitedBy = T2k7Bm9G9RNLcHLvLlKApRbnas23;
invitee = dRJ1FqctSfTlLF8iO2ddlc9BANJ3;
role = guardian;
};
}]
내가 문제가있는 tableView 채우기가 있어요. 셀 라벨에 아무 것도 표시되지 않습니다.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
let inviteDict = invites[indexPath.row].value as! [String : AnyObject]
let role = inviteDict["role"] as? String
cell.textLabel!.text = role
return cell
}
아이디어가 있으십니까?
감사합니다.
편집 : 내 기능을 실행 한 후 사전을 콘솔에 인쇄하고 []
을 인쇄 중입니다. 가치를 잃는 이유는 무엇입니까?
override func viewWillAppear(animated: Bool) {
getAlerts() // inside of function prints values
print(self.invites) //prints []
}
편집 2 : Paul의 솔루션이 작동했습니다. Firebase가 결과를 "듣는다"는 다음 기능을 추가했습니다! 내가 로그인 한 사용자 만 표시 경고에이를 편집 할 수 있습니다, 그러나 이것은 적어도 올바른 방향으로 절 지적했습니다 중포 기지가 비동기이기 때문에
override func viewWillAppear(animated: Bool) {
getAlerts()
configureDatabase()
}
func configureDatabase() {
// Listen for new messages in the Firebase database
let ref = self.rootRef.child("invites").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
self.invites.append(snapshot)
self.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: self.invites.count-1, inSection: 0)], withRowAnimation: .Automatic)
})
}
당신은 getAlerts 함수 밖에서 쿼리가 끝난 후 사전이 nil을 반환하지 않는지 확인해야합니다. 나는 같은 문제를 겪고있다. 값은 함수 내에 저장되지만 일단 값을 그대로두면 –
답장을 보내 주셔서 감사합니다. 나는 네가 뭔가있는 것 같아! 방금 내 질문을 업데이트했습니다. 나는 콘솔이 실행 된 후에 그 dict을 콘솔에 출력했고 이제는 [[]'을 출력하고있다. 도대체 무슨 일이야? 이 문제를 어떻게 해결할 수 있습니까? – winston
저는 약 2 일 동안이 문제를 직접 해결하려고 노력해 왔습니다. 나는이 스레드에 매우주의를 기울일 것이다. 다행히 누군가가 해결책을 찾게 될 것입니다. 그 동안 속성 관찰자를 사용해 볼 수 있습니다. 귀하의 사전이 무조건으로 설정되는 곳을 알려줍니다. 오늘 나 자신에 대해 알았다. –