Share
Embed
Transcript
25 slides
-
3.4·Ͱόάमਖ਼(RMD) • setRequired()Ͱbyte[]ܕͷϑΟʔϧυΛnon-nullʹมߋ͢Δࡍɺbyte[0]ʹม͞ ΕΔ͖ͷ͕byte[1]ʹͳ͍ͬͯͨόάΛमਖ਼ • ϓϥΠϚϦΩʔʹࢦఆ͞Ε͍ͯΔϑΟʔϧυʹରͯ͠setRequired()Ͱnon-nullʹ มߋ͢ΔࡍɺnullͷϑΟʔϧυ͕ଘࡏͨ͠Βྫ֎Λεϩʔ͢ΔΑ͏ʹमਖ਼ • ೝূΤϥʔൃੜ࣌ʹΫϥογϡ͢ΔόάΛमਖ਼(#4726) •
αʔόʔಉظ༗ޮ࣌ͰɺϩʔΧϧͷσʔλϕʔεͷ҉߸ԽʹରԠ(#4561) • AdminϢʔβʔ͕αʔόʔʹଓͰ͖ͳ͍όάΛमਖ਼(#4750) • αʔόʔଓʹࣦഊͨ͠ͱ͖ʹਖ਼͘͠ϦτϥΠ͞Εͳ͍όάΛमਖ਼(#4750) [email protected] -
Realm Java 3.4৽ػೳ • ΫΤϦʔதͰͷٯํͷؔ࿈Λαϙʔτͱਖ਼ࣜAPIͷঢ֨⭐ • ಉظͷਐḿঢ়گͷ௨Λड͚औΔAPIΛՃ(#4104) ⭐ • ݱࡏͷಉظঢ়ଶΛऔಘ͢ΔAPIΛՃ⭐
• Realm.getDefaultConfiguration()ͷՃ • RealmSchema.close()ͱRealmObjectSchema.close() Λ deprecated [email protected] -
ٯํͷؔ࿈ʹର͢ΔΫΤϦʔ [email protected] public class Person extends RealmObject { public String
name; public Dog dog; } public class Dog extends RealmObject { public String name; public int age; @LinkingObjects("dog") public RealmResults<Person> owners; } Person owner; owner = realm.where(Dog.class).equalTo("owners.name", "Jane").findFirst; ͜ͷΦϒδΣΫτΛdogϑΟʔϧυ͔Β ࢀর͍ͯ͠ΔશͯͷPersonΦϒδΣΫτ ownersΛϦϯΫΫΤϦʔͰར༻Մೳ -
ݱࡏͷಉظঢ়ଶΛऔಘ͢ΔAPI [email protected] public enum State { WAITING_FOR_ACCESS_TOKEN, // ΞΫηετʔΫϯऔಘத ACTIVE,
// ΞΫηετʔΫϯ͋Γ DYING, // ϩάΞτॲཧத INACTIVE, // ϩάΠϯલɺϩάΠϯޙ ERROR // Τϥʔ } SyncSession session = SyncManager.getSession(config); SyncState state = session.getState(); -
ಉظͷਐḿΛड͚औΔϦεφʔ [email protected] SyncSession session = SyncManager.getSession(config); showProgressBar(); session.addUploadProgressListener(ProgressMode.CURRENT_CHANGES, new ProgressListener()
{ @Override public void onChange(Progress progress) { if (progress.isTransferComplete()) { hideProgressBar(); session.removeProgressListener(this); } else { updateProgressBar(progress.getFractionTransferred()); } } }); -
ಉظͷਐḿΛड͚औΔϦεφʔ [email protected] SyncSession session = SyncManager.getSession(config); session.addDownloadProgressListener(ProgressMode.INDEFINITELY, new ProgressListener() {
@Override public void onChange(Progress progress) { showDownloadingChanges(!progress.isTransferComplete()); } }); -
master-4.0 ϒϥϯν [email protected] • Realm Java 4.0Ͱఏڙ͞ΕΔඇޓͳมߋΛؚΉϒϥϯν • ໘ɺmaster͔Β3.x͕ɺmaster-4.0͔Β4.x͕ϦϦʔε͞ΕΔ༧ఆ •
͠Β̎͘όʔδϣϯΛฒߦͯ͠ϝϯςφϯε͍͖ͯ͠·͢ • snapshotϦϦʔε̎όʔδϣϯฒߦͯ͠ߦ͍·͢ • Breaking Change Wishlist for 4.0 (#4785)Ͱඇޓมߋͷ༧ఆΛཧ • ͦΕͧΕͷϒϥϯνʹೖͬͨมߋɺҎԼͷΑ͏ʹࣗಈϚʔδ͞Ε·͢ releases → master → master-4.0 -
ηοτΞοϓ [email protected] apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin:
'kotlin-android-extensions' // RealmͷϓϥάΠϯ͕KotlinΛೝࣝͰ͖ΔΑ͏ʹɺKotlin pluginΑΓޙͰapply apply plugin: 'realm-android' android { ... } app/build.gradle -
Kotlinαϙʔτͱʁ • RealmͷΞϊςʔγϣϯϓϩηοαΛkapt configurationʹొ [email protected] dependencies { annotationProcessor 'io.realm:realm-annotations-processor:3.4.0' }
// ཁ͢Δʹ↑ͷ͔ΘΓʹ↓ dependencies { kapt 'io.realm:realm-annotations-processor:3.4.0' } -
KotlinͰͷϞσϧఆٛ open class User : RealmObject() { @PrimaryKey var id:
Long = 0 var name: String = "" var description: Sting? = null } Or open class User( @PrimaryKey var id: Long = 0, var name: String = "", var description: String? = null ) : RealmObject() {} [email protected] -
SAMมͷ׆༻ realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) {
final Person p = realm.createObject(Person.class); p.name = "Jane"; } }); realm.executeTransaction { val person = realm.createObject(Person::class.java) person.name = "Jane" } [email protected] Java Kotlin -
KClass༻ͷ֦ுؔΛఆٛ fun <T : RealmModel> Realm.createObject(klass : KClass<T>) : T
{ return this.createObject(klass.java) } realm.executeTransaction { val person = realm.createObject(Person::class) person.name = "Jane" } [email protected] -
KClass༻ͷ֦ுؔΛఆٛ fun <T : RealmModel> Realm.where(klass : KClass<T>) : RealmQuery<T>
{ return this.where(klass.java) } val query = realm.where(Person::class) [email protected] -
KProperty༻ͷ֦ுؔΛఆٛ fun <T : RealmModel> RealmQuery<T>.equalTo(property : KProperty<Int?>, value: Int)
: RealmQuery<T> { return this.equalTo(property.name, value) } fun <T : RealmModel> RealmQuery<T>.equalTo(property : KProperty<String?>, value: String) : RealmQuery<T> { return this.equalTo(property.name, value) } val persons = realm.where(Person::class).equalTo(Person::age, 25) val persons = realm.where(Person::class).equalTo(Person::age, "25") // Τϥʔ [email protected] -
KProperty༻ͷ֦ுؔΛఆٛ fun <T : RealmModel> RealmQuery<T>.group(body: RealmQuery<T>.() -> Unit) :
RealmQuery<T> { beginGroup() body() return endGroup() } val persons = realm.where(Person::class) .group { equalTo(Person::age, 25).or().equalTo(Person::age, 30) } .beginsWith(Person::name, "J") [email protected] -
Better Kotlin support (#4701) • RealmͷKotlinαϙʔτͷͨΊͷΞΠσΟΞืू • KClass, KPropertyΛαϙʔτ͢ΔͨΊͷ֦ுؔ •
@NotNull, @NullableΞϊςʔγϣϯ༩ʹΑΔੑ্ • ϞσϧఆٛʹΘΕͨඇNullܕΛ@Requiredѻ͍ʹ [email protected] Any idea?