2016-04-02 6 views
0

Nesneme nesneleri yerleştirmem gerekiyor ve şimdiye kadar işler iyi çalışıyor.Alanda benzersiz nesneler nasıl eklenir?

public void markAsFavorite(View view) 
    { 
     Realm realm = Realm.getInstance(this); 
     realm.beginTransaction(); 
     favorite f1 = realm.createObject(favorite.class); 
     f1.setMovieName(m_name); 
     f1.setRelease_date(release_date); 
     f1.setPoster_link(poster_link); 
     f1.setID(id); 
     f1.setVote_avg(vote_avg); 
     f1.setSynopsis(synopsis); 
     f1.setTrailer(fn_trailer); 
     realm.commitTransaction(); 
    } 

favorite.class:

public class favorite extends RealmObject 
{ 
    private String movieName,release_date,poster_link,synopsis,trailer; 
    private double vote_avg; 

    @PrimaryKey 
    private int ID; 

    public int getID() 
    { 
     return ID; 
    } 

    public void setID(int ID) 
    { 
     this.ID = ID; 
    } 

    public String getMovieName() 
    { 
     return movieName; 
    } 

    public void setMovieName(String movie) 
    { 
     this.movieName = movie; 
    } 

    public String getRelease_date() 
    { 
     return release_date; 
    } 

    public void setRelease_date(String release) 
    { 
     this.release_date = release; 
    } 

    public String getPoster_link() 
    { 
     return poster_link; 
    } 

    public void setPoster_link(String poster) 
    { 
     this.poster_link = poster; 
    } 

    public String getSynopsis() 
    { 
     return synopsis; 
    } 

    public void setSynopsis(String syn) 
    { 
     this.synopsis = syn; 
    } 

    public String getTrailer() 
    { 
     return trailer; 
    } 

    public void setTrailer(String trail) 
    { 
     this.trailer = trail; 
    } 

    public double getVote_avg() 
    { 
     return vote_avg; 
    } 

    public void setVote_avg(double vote) 
    { 
     this.vote_avg = vote; 
    } 


} 

Şimdi sorun geçerli: Gördüğünüz gibi ben kayıtlarında yalnızca tekil öğeler eklemek gerekir, ben ID tanımladığınız birincil anahtar.

@PrimaryKey 
private int ID; 

aynı ID aleminde bulunup bulunmadığından emin yaparak bir nesne eklemek mümkün mü? DÜZENLEME-1, benzer bir soruya ise

, bu çözüm bulduk


:

public boolean checkIfExists(String id){ 

    RealmQuery<Data> query = realm.where(Data.class) 
      .equalTo("id", id); 

    return query.count() == 0 ? false : true; 
} 

Ancak benim uygulamasında işe yaramadı, ben bir şey eksik?

cevap

1

bu deneyin:

birincil anahtar benzersiz olması zorlanır
public boolean checkIfExists(String id){ 

RealmResults<Data> query = realm.where(Data.class) 
        .equalTo("ID", id).findAll(); 

     return query.size() == 0 ? false : true; 
    } 
+0

@shaheen kodumu güncelledi. – Sabari

+0

Çalışıyor? – Sabari

0

, zaten mevcut olan bir kimliğe sahip bir nesne eklemeye çalışırsanız o zaman, ekleme işlemi başarısız olur ve erişim alanı istisna yükseltecektir.

Birincil anahtar olarak kullanılandan farklı diğer alanları da denetlemek isterseniz, benzersiz kısıtlama henüz kullanılamıyor, daha sonra tek bir sorgulama kullanarak bir sorguyu kullanarak bunları manuel olarak (ekleme işleminden hemen önce) kontrol etmektir. Benzersiz olmanız gereken alanlarda "equalTo" ler.