2016-07-10 2 views
4

Kotlin에서 Firebase 데이터베이스에 객체를 저장하려고합니다. 기본 빈 생성자를 제공하고 값을 nullable으로 설정하면이 코드를 모두 변경해야합니다. .kotlin 객체의 빈 생성자가 Firebase를 사용합니다.

내 클래스 :

class Video(var id: String, var url: String, var owner: User) : { 
    constructor() : this("", "", User("", "", "")) 
} 

중포 기지 푸시 :

FirebaseDatabase.getInstance().reference.child("public").push().setValue(video) 

오류 :

is missing a constructor with no arguments

이에 대한 더 나은 솔루션이 있습니까?

답변

16

를 사용하여 기본 인자 :

class Video(var id: String = "", var url: String = "", 
    var owner: User = User("", "", "")) 

은 (또한, val을 사용하는 것이 좋습니다).

+1

'val'은 변경할 수 없습니다. 디시리얼라이저는 실제 값을 설정할 수 없으므로 동일한 (기본값) 값을 가진 객체 묶음을 갖게됩니다. – papageorgiouk

0

빈 생성자를 Video 클래스에 추가해야합니다. 이것은 Firebase에서 클래스를 사용할 수 있어야합니다.

+0

하지만 nullable 타입과 일치하지 않는 것들이 생기고 이상하게 보이는 것은이 요구 사항의 기원전에 불과하다. – Caipivara

+0

잘 모르겠습니다. 시험을해야합니다. 그 요구 사항은 Firebase 문서에 언급되어 있습니다. – PaulNunezM

3

나는 그것이 중포 기지와 함께 작동하는지 테스트하지만, kotlin documentation에 따라되지 않은,

NOTE: On the JVM, if all of the parameters of the primary constructor have default values, the compiler will generate an additional parameterless constructor which will use the default values. This makes it easier to use Kotlin with libraries such as Jackson or JPA that create class instances through parameterless constructors.

그래서 나는 당신을위한 매개 변수가없는 생성자를 생성하는 모든 생성자 매개 변수에 대한 기본값을 적용하여, 가정합니다.

+1

네, 작동합니다! – sokarcreative

관련 문제