2016-10-27 17 views
1

나는 두 영역 개체 클라세 있습니다영역이 제대로 삭제하지

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()을 제거하고 아래에 배치하는 것이 좋습니다. 이렇게하면 테이블보기를 다시로드하기 전에 항목이 제대로 삭제되었는지 확인할 수 있습니다.

흠, 부모 목록에서 개체를 삭제하는 것처럼 들리지만 렐름에서는 적절하지 않은 것으로 들립니다. 영역은 아직 support cascading deletes이 아니므로 목표 객체 (OrderItem 객체)를 직접 삭제해야합니다. OrderItemList에서 제거하거나 OrderItemList을 삭제하면 삭제되는 대신 해당 객체가 속한 목록을 삭제해야합니다.

의미가 있습니까? 더 많은 설명이 필요하면 알려주세요!

+0

내가 질문 할 수 있다면 어떻게해야합니까? 죄송합니다 처음 사용하는 영역은 –

+1

걱정하지 않으셔도됩니다. 평범하지 않은 것이 아닙니다. 삭제할 정확한'OrderItem' 객체에서 직접'realm.delete'를 호출하고 있는지 확인하십시오. 배열에있는 객체를 보유하고있는 목록 객체에서이를 수행하는 것만으로는 충분하지 않습니다. – TiM

관련 문제