2016-12-05 22 views
6

Listeyi JSON Yanıtından kaydeden Realm Nesnim var. Ama şimdi nesne JSON dan tekrar listede değilse nesneyi kaldırmak gerekir. Bunu nasıl yaparım? Bu alanda benim initSwift Nesneyi Kaldır Realm

func listItems (dic : Array<[String:AnyObject]>) -> Array<Items> { 
     let items : NSMutableArray = NSMutableArray() 
     let realm = try! Realm() 
     for itemDic in dic { 
      let item = Items.init(item: itemDic) 
       try! realm.write { 
        realm.add(item, update: true) 
       } 
      items.addObject(item) 
     } 
     return NSArray(items) as! Array<Items> 
} 
+0

Btw i wan olabilir item.id – Voyager

+0

için birincil anahtara sahip yeni kümesine dahil değildir her öğeyi sorgulamak olabilir t nasıl [gerçek bağlantı] (https://realm.io/docs/swift/latest/#deleting-objects) silmek için ... –

cevap

3

de Realm nesneleri silme hakkında ne sen ekleme ve bu anahtar zaten daha önce var olup olmadığını doğrulamak yeni çözümlü JSON alırken nesnenin bir birincil anahtar atamak yapabileceğimiz ekleyerek. Yeni nesneler eklerken önce var olup olmadığını doğrulamak için Realm veritabanını sorgulayın.

let repeatedItem = realm.objects(Items.self).filter("id = 'newId'") 

if !repeatedItem { 
    // Insert it 
} 
14

sizin Items nesne id özelliğine sahiptir hayal ve bunun dışındaki yeni kümesine dahil eski değerleri kaldırmak istiyor, ya sadece

let result = realm.objects(Items.self) 
realm.delete(result) 

ile her şeyi silmek ve sonra tüm öğeler eklemek olabilir tekrar alemine, ya da

let items = [Items]() // fill in your items values 
// then just grab the ids of the items with 
let ids = items.map { $0.id } 

// query all objects where the id in not included 
let objectsToDelete = realm.objects(Items.self).filter("id NOT IN %@", ids) 

// and then just remove the set with 
realm.delete(objectsToDelete)