2016-10-27 6 views
1

私は2つのレルムオブジェクトクラッセありますレルムは正しく削除しませ

var dataToBeUsed : Results<OrderItem>! 

let itemToBeDelete = dataToBeUsed[indexPath.row]  
    try! realm.write { 
     realm.delete(itemToBeDelete) 
     tableView.reloadData() 
    } 

class OrderItemList: Object { 
let ListofStockItemOrderData = List<OrderItem>() 
    // 
} 

class OrderItem: Object { 
    dynamic var UnitDescriptor = " " 
    dynamic var StockQty = 0 
    dynamic var StockItemUnique = Int() 
    dynamic var StockUnitCost = Int() 
    dynamic var isCompleted = false 
} 

私が追加しUITableViewに表示し、その後OrderItemにアイテムを保存して、私は私がで追加された不要な項目を削除

私は呼ん:

let allObjects = realm.objects(OrderItemList.self) 

私が削除したアイテムが消えていますが、私が呼び出すとされています

let allObjects = realm.objects(OrderItem.self) 

項目はまだ存在します。 両方から削除するにはどうすればよいですか。

答えて

2

まず、realm.writeブロックのうちtableView.reloadData()を削除して下に置くことをおすすめします。これは、テーブルビューを再読み込みする前に項目が適切に削除されていることを確認します。

ええと、それは親リストからオブジェクトを削除しているようですが、Realmでは正しくはありません。レルムはまだsupport cascading deletesではありませんので、ターゲットオブジェクト(OrderItemオブジェクトを直接削除する必要があります。OrderItemListから削除するか、OrderItemListを削除することはありません)。

それは意味がありましたか?より明確にする必要がある場合はお知らせください!

+0

私は尋ねることができますか?申し訳ありません、これは私の初めての領域です –

+1

心配なし!それは普通ではありません。あなたが削除したい正確な 'OrderItem'オブジェクトに' realm.delete'を直接呼び出すようにしてください。オブジェクトを配列内に保持しているリストオブジェクトでそれを実行するだけでは十分ではありません。 – TiM

関連する問題