2016-11-23 18 views
0

私のアプリケーションでは、firebaseを使用して、主なユーザーデータを行に保存し、重要なもの(特性)を辞書に保存します。ユーザーは、データの追加、変更、削除を行うことができます。何度か、データベースから正常なデータを取得しますが、何らかの理由で配列の代わりに辞書を取得します。さらに、この配列にはオブジェクトNSNullアプリケーションが含まれています。なぜFirebaseが辞書の代わりに配列を返すのですか?

[self.ref observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

TSFireUser *user = [[TSFireUser alloc] init]; 

NSString *token = [[NSUserDefaults standardUserDefaults] valueForKey:@"token"]; 
FIRUser *fireUser = [FIRAuth auth].currentUser; 


NSString *key = [NSString stringWithFormat:@"dataBase/users/%@/userData", fireUser.uid]; 
NSString *keyToParameters = [NSString stringWithFormat:@"dataBase/users/%@", fireUser.uid]; 

FIRDataSnapshot *fireUser = [snapshot childSnapshotForPath:key]; 
FIRDataSnapshot *fireUserParameters = [snapshot childSnapshotForPath:keyToParameters]; 

FIRDataSnapshot *userIdent = fireUser.value[@"userID"]; 
FIRDataSnapshot *userName = fireUser.value[@"displayName"]; 
FIRDataSnapshot *userEmail = fireUser.value[@"email"]; 
FIRDataSnapshot *userPhoto = fireUser.value[@"photoURL"]; 
FIRDataSnapshot *dateOfBirth = fireUser.value[@"dateOfBirth"]; 
FIRDataSnapshot *location = fireUser.value[@"location"]; 
FIRDataSnapshot *gender = fireUser.value[@"gender"]; 
FIRDataSnapshot *parameters = fireUserParameters.value[@"parameters"]; 


user.uid = (NSString *)userIdent; 
user.displayName = (NSString *)userName; 
user.email = (NSString *)userEmail; 
user.photoURL = (NSString *)userPhoto; 
user.dateOfBirth = (NSString *)dateOfBirth; 
user.location = (NSString *)location; 
user.gender = (NSString *)gender; 
user.parameters = (NSMutableDictionary *)parameters;}]; 

私は一人で問題を決めた任意のヘルプ

答えて

0

に感謝されます:ここで私は、データを取得するコードです。一番下の行は、データベース内のデータへのキーが、すべてがうまく機能していたという単語「キー」を追加することで、行番号@ "1"、@ "2"、@ "3"その結果、キーは次のようになります。@ "key1"、@ "key2" @ "key3" ..

関連する問題