Firebase数据库冲突的getter用于name:getAddress

时间:2016-11-23 17:52:06

标签: android firebase firebase-realtime-database

目前正在试用Google的Places API,同时尝试将Place推送到我的Firebase数据库。下面的代码尝试这样做,但在调用它时会出错。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PLACE_PICKER_REQUEST) {
        if (resultCode == RESULT_OK) {
            Place place = PlacePicker.getPlace(this, data);
            String toastMsg = String.format("Place: %s", place.getName());
            Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();

            String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            DatabaseReference userRef = database.getReference("users/" + userUid);

            userRef.setValue(place);
        }
    }
}

我得到的错误如下:

11-23 18:34:24.874 13155-13155/io.app.roomie E/AndroidRuntime: FATAL EXCEPTION: main
    Process: io.app.roomie, PID: 13155
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {io.app.roomie/io.app.roomie.MainActivity}: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getAddress
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4089)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getAddress
    at com.google.android.gms.internal.zzamy$zza.<init>(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzj(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzca(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzbz(Unknown Source)
    at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
    at com.google.firebase.database.DatabaseReference.setValue(Unknown Source)
    at io.app.roomie.MainActivity.onActivityResult(MainActivity.java:81)
    at android.app.Activity.dispatchActivityResult(Activity.java:6932)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132) 
    at android.app.ActivityThread.-wrap20(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6119) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

对代码格式感到抱歉。我无法让它工作。

1 个答案:

答案 0 :(得分:1)

课程var dataTask: URLSessionDataTask? let url = NSURL(string: "https://itunes.apple.com/search?media=music&entity=song&term=test") dataTask = defaultSession.dataTask(with: url! as URL) { data, response, error in if let error = error { print(error.localizedDescription) } else if let _ = response as? HTTPURLResponse { print("ok") } } dataTask?.resume() 并不意味着直接保存到Firebase中。

您应该编写一个简单的POJO类,其中只包含Place中需要的字段,复制数据,并将此简单对象保存到数据库中。