2017-03-20 4 views
2

삭제할 셀을 여러 개 선택할 수있는 컬렉션보기가 있습니다. 즉, 여러 셀을 삭제하면 여러 개체가 셀당 영역 -1 개체에서 삭제되어야합니다.렐름의 목록에서 개체 삭제 - Swift

나는 컬렉션보기의 선택된 indexPaths에서 채울 Int의 배열을 취하는 함수를 가지고 있습니다.

문제는 내가 모두
1)

내 코드가 삭제 된 개체없이 영역에서 개체 및
2) 날짜까지 List을 가지고 삭제하는 방법을 잘 모르겠어요 것입니다 :

나는 인덱스 경로과 같이 얻을 : 이것은 내 기능에

let indexPaths = collectionView.indexPathsForSelectedItems

입니다 indexPaths를 가져 와서 List을 업데이트하고 영역의 객체를 삭제하십시오. 개체가 삭제되지 않기 때문에 현재 작동하지 않습니다. removeAll은 아무 것도 삭제하지 못한다는 것을 알았습니다.

func removeVideos(at indexes: [Int]) { 
     let newVideos = List<Video>() 
     for (index, video) in favorite!.videos.enumerated() { 
      if !indexes.contains(index) { 
       newVideos.append(video) 
      } 
     } 

     let realm = try! Realm() 
     try! realm.write { 
      favorite!.videos.removeAll() 

      newVideos.forEach { newVideo in 
       favorite!.videos.append(newVideo) 
      } 
     } 
    } 

나는과 같이 그 함수를 호출

removeVideos(at: indexPaths.map { $0.item })

어떤 생각?

답변

6

List.removeAll() 개체를 영역에서 삭제하지 않습니다. 부모 개체 (이 경우 favorite 개체)와의 관계를 삭제하면 List 개체에서 개체가 제거됩니다. 상위 List 개체와 함께 개체를 삭제하면 '계단식 삭제'라는 기능이며 영역 GitHub에서는 it's still being discussed입니다.

실제로 삭제하려는 경우 realm.delete(favorite!.videos)으로 전화하면됩니다. 그러면 영역에서 삭제되고 List 속성이 자동으로 제거됩니다.

그렇다면 구현시주의해야 할 수도 있습니다. 영역에서 Object이 삭제되면 기존 참조가 영역으로 다시 추가 될 수 없습니다. 전체 List을 삭제하는 대신 newVideo 개체 자체를 삭제하는 것이 적절할 수 있습니다.

func removeVideos(at indexes: [Int]) { 
    let newVideos = [Video]() 
    for (index, video) in favorite!.videos.enumerated() { 
     if !indexes.contains(index) { 
      newVideos.append(video) 
     } 
    } 

    let realm = try! Realm() 
    try! realm.write { 
     realm.delete(newVideos) 
    } 
} 

는만큼 당신이 컬렉션 뷰에 영역 알림 블록을 설정 한,이 그들이 당신의 UI에서 제거하기 위해 당신이해야 할 모든해야한다.

+0

원더 설명! 다른 사람들을 돕는 데 모든 소프트웨어 개발 분야에서 최고의 인물입니다. 항상 좋은 답변을 명확하고 직접적으로 제공 해줘서 고맙습니다.) – JEL

+0

빠른 추적 조사는 사용자가 시작 했으므로 권장 사항입니다. 알림 블록을 사용하거나 렐름의'Interface-Driven Write'를 사용하여 선택한 셀을 삭제 하시겠습니까? – JEL

+0

안녕하세요, Tim (제발 렐름에서 어떤 샘플 코드를 볼 수 없어) 이것 좀 봐 주시겠습니까 : http://stackoverflow.com/questions/42988499/realm-object-level-notifications- inside-uicollectionviewcells – JEL