AMcoder - javascript, python, java, html, php, sql

Տվյալների փոփոխություն տիրույթում android-ում

Իմ android հավելվածում ես շարունակում եմ մարզման առարկան դաշտում: Իմ գործողություններից մեկում ես ստեղծում եմ օբյեկտ այս կոդով.

realm.beginTransaction();

Workout w = realm.createObject(Workout.class);

w.setmWorkoutId(UUID.randomUUID().toString());

realm.commitTransaction();

Ահա իմ մարզման դասը.

public class Workout extends RealmObject{
  private String mWorkoutId;
  private int restSecsLeft;
  private boolean prevSetOver = true;
  private boolean workoutOver = false;

  public Workout(){}

  public String getmWorkoutId() {
    return mWorkoutId;
  }

  public void setmWorkoutId(String mWorkoutId) {
    this.mWorkoutId = mWorkoutId;
  }

  public int getRestSecsLeft() {
    return restSecsLeft;
  }

  public void setRestSecsLeft(int restSecsLeft) {
    this.restSecsLeft = restSecsLeft;
  }

  public boolean getPrevSetOver() {
    return prevSetOver;
  }

  public void setPrevSetOver(boolean prevSetOver) {
    this.prevSetOver = prevSetOver;
  }

  public boolean getWorkoutOver() {
    return workoutOver;
  }

  public void setWorkoutOver(boolean workoutOver) {
    this.workoutOver = workoutOver;
  }

}

Ես ունեմ ծառայություն, որն աշխատում է մարզման ստեղծումից հետո, և տարօրինակ վարքագիծը վրիպազերծելուց հետո գտել եմ մի օրինակ, որտեղ prevSetOver-ի արժեքը, որը պահվում է RealmObject-ում, տարբերվում է w.getPrevSetOver()-ից վերադարձված արժեքից: Վստահ չեմ, թե ինչպես է դա տեղի ունենում. ես չեմ փոխում prevSetOver փոփոխականի արժեքը օբյեկտի ցուցումից հետո: Ես նոր տիրույթի օգտատեր եմ և չեմ հասկանում, թե ինչպես է դա տեղի ունենում: Իմ կցած նկարը w.prevSetOver() մեթոդի և RealmObject-ի սքրինշոթն է, որն ունի տարբեր արժեքներ:

Այս էկրանի վրիպազերծիչում ավելի շատ փոփոխականներ կան, ես դրանցից շատերը բաց թողեցի իմ գրառման մեջ՝ պարզության համար:

մուտքագրեք պատկերի նկարագրությունը այստեղ

21.07.2015

  • Դուք պետք է օգտագործեք executeTransaction()՝ begin/commitTransaction()-ի փոխարեն 05.08.2016

Պատասխանները:


1

Դա Realm-ի ճիշտ վարքագիծն է։

Realm-ը ստեղծում է Proxy օբյեկտ, որը ժառանգում է ձեր Workout-ից կոմպիլյացիայի ժամանակ: Իսկ կարդալ/գրել տվյալները Realm-ից/դեպի իրականում իրականացվում է Proxy Object-ի կողմից՝ գերակայող ստացողների/սահմանիչների միջոցով: Օրիգինալ Օբյեկտի անդամ դաշտը չի փոխվի Realm-ի կողմից:

Երբ Realm.createObject()-ը կանչվում է, այն վերադարձնում է Proxy օբյեկտ, որի անդամ դաշտերը այն չեն, ինչ դուք սպասում էիք:

Դուք դեռ կարող եք ստեղծել սկզբնական մոդելի օբյեկտի օրինակ, որը մենք այն անվանում ենք ինքնուրույն օբյեկտ (նշանակում է, որ այն չի կառավարվում Realm-ի կողմից)՝ զանգահարելով Workout w = new Workout(): Սա կգործի ճիշտ այնպես, ինչպես սովորական Java օբյեկտը: Եվ դուք դեռ կարող եք պատճենել այն Realm-ում՝ զանգահարելով w = realm.copyToRealmOrUpdate(w): Ուշադրություն դարձրեք, որ մենք փոխեցինք w-ի արժեքը վերադարձվող արժեքի: Ֆունկցիան կվերադարձնի Proxy օբյեկտ, որն այժմ կառավարվում է Realm-ի կողմից:

22.07.2015

2
realm.beginTransaction();
Workout w = realm.createObject(Workout.class);
w.setmWorkoutId(UUID.randomUUID().toString());
realm.copyToRealm(w); //<-- u need
realm.commitTransaction();

ավելի լավ է ավելացնել Primarykey-ը, փոխել u String փոփոխականը՝ long

@PrimaryKey
private long mWorkoutId;
31.10.2016
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..