NSPredicate를 사용하여 배열 속성을 기반으로 CoreData 항목 목록 필터링

santi.gs

문맥

'작업'이라는 핵심 데이터 엔티티가 있습니다.

'Task'는 'Tag'라는 다른 엔티티와 관계가 있습니다. @NSManaged public var tags: NSSet?이 데이터는 다음과 같이 저장됩니다.

public var tagsArray: [Tag] {
    let set = tags as? Set<Tag> ?? []

    return set.sorted {
        $0.wrappedTagTitle < $1.wrappedTagTitle
    }
}

특정 태그 (예 : "School"제목)가 포함 된 작업 목록을 기준으로 필터링하려고합니다.

var fetchRequest: FetchRequest<Task>

init(tagFilterName: String) {
    let tag = Tag()
    tag.title = tagFilterName
    fetchRequest = FetchRequest<Task>(entity: Task.entity(), sortDescriptors: [], predicate: NSPredicate(format: "tagsArray CONTAINS %@", tag))
}

이것은 상위 뷰에서 초기화됩니다.

FilteredScrollView(tagFilterName: "School")

(초기화의 우연한 코드를 실례합니다. 나는 단지 내가하려는 일을 이해하려고 노력하고 있습니다.)

결과

현재로서는 런타임에 충돌이 발생합니다. 어떤 도움이라도 대단히 감사하겠습니다.

톰 해링턴

당면한 문제는 Tag()지정된 이니셜 라이저를 호출하지 않는 새 인스턴스를 만들기 위해 호출한다는 것 입니다. 새를 만들려면 Tag당신은 사용해야합니다 Tag(context: NSManagedObjectContext). 제대로 초기화되지 않은 개체를 사용하려고했기 때문에 충돌이 발생합니다.

그것은 문제의 일부일뿐입니다. 이를 고치면 충돌을 고칠 수 있지만 결과가 0이됩니다. 다른 문제는 Tag가져 오기를 위해 새 파일 만들지 않아야한다는 것 입니다. Core Data 술어는 정확히 일치하는 항목을 찾습니다.와 같은 것은 없으며 동일한 제목을 가진 Equatable다른 항목 Tag찾지 않습니다 . 정확한 태그를 찾을 것입니다. 하지만 방금 해당 태그를 생성했고 어떤 작업에도 연결되어 있지 않기 때문에 결과가 없습니다. CONTAINS더 이후 운영자는 아무것도 일치하지 않습니다 Task포함 Tag방금 만든.

관계를 통해 속성 값을 일치 시키려면 (이 경우 관계를 Tag.title통해 일치 ) tags조건 자는 다음과 같습니다.

NSPredicate(format: "any tags.title = %@", tagFilterName)

가져올 때 관계의 구성원 이 같은 값을 갖는 위치를 Task묻습니다 .TasktagstagFilterName

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Lucene 필터를 사용하여 목록을 기반으로 항목 제한

분류에서Dev

와일드 카드를 사용한 입력을 기반으로 배열에서 항목 필터링

분류에서Dev

튜플의 두 번째 항목을 기반으로 고유 항목을 가져 오기 위해 itemgetter 및 list comp를 사용하여 튜플 목록 필터링

분류에서Dev

jquery를 사용하여 배열의 객체 값을 기반으로 목록 항목의 너비 설정

분류에서Dev

Groovy의 열 값을 기반으로 목록 목록의 요소를 필터링하는 방법

분류에서Dev

문자열 목록을 기반으로 항목 필터링 / 제거

분류에서Dev

맵 함수를 사용하여 목록의 데이터 속성을 jQuery의 배열로 가져 오기

분류에서Dev

정적 필터링 값을 기반으로 재 선택 redux를 사용하여 필터링 된 목록을 생성하는 방법은 무엇입니까?

분류에서Dev

목록보기는 Flutter의 속성을 사용하여 마지막 행 데이터를 필터링합니다.

분류에서Dev

고유 한 배열 항목을 선택 목록으로 필터링

분류에서Dev

값 배열을 기반으로 Angular의 JSON에서 선택 항목 필터링

분류에서Dev

객체 배열을 사용하여 채우기 및 jQuery를 사용하여 계단식 드롭 다운 목록 필터링

분류에서Dev

두 값을 기준으로 배열 목록을 필터링하는 방법

분류에서Dev

PropertyName을 문자열 리터럴로 사용하여 LINQ를 사용하여 일반 목록 필터링-역학 사용

분류에서Dev

공통 ID를 기반으로하는 하위 목록 그룹을 사용하여 HTML 링크 목록 작성

분류에서Dev

Javascript 배열의 문자열 목록을 기반으로 객체를 필터링하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Python-키 값이 다른 목록의 모든 항목을 포함하는지 여부를 기준으로 사전 목록 필터링

분류에서Dev

Scala의 Optional 속성을 기반으로 목록 필터링

분류에서Dev

.equals를 재정 의하여 Java의 2 개 속성을 기반으로 사용자 지정 개체의 2 개 배열 목록을 비교하는 방법

분류에서Dev

.equals를 재정 의하여 Java의 2 개 속성을 기반으로 사용자 지정 개체의 2 개 배열 목록을 비교하는 방법

분류에서Dev

NSPredicate를 사용하여 알파벳이 아닌 문자로 시작하는 항목 필터링

분류에서Dev

키-배열 쌍을 포함하는 개체를 사용하여 개체 중첩 개체 목록 필터링

분류에서Dev

키를 기반으로 Python에서 사전 목록 필터링

분류에서Dev

ng-repeat를 필터링하여 객체 속성에서 쉼표로 구분 된 배열 값 목록을 만듭니다.

분류에서Dev

Where In을 사용하여 ElasticSearch 배열의 항목에 대한 문서 필터링

분류에서Dev

배열 항목으로 목록 필터링

분류에서Dev

튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

분류에서Dev

jq를 사용하여 필드를 기반으로 객체 목록에서 하나의 객체 필터링

분류에서Dev

목록 목록을 사용하여 목록 목록 필터링

Related 관련 기사

  1. 1

    Lucene 필터를 사용하여 목록을 기반으로 항목 제한

  2. 2

    와일드 카드를 사용한 입력을 기반으로 배열에서 항목 필터링

  3. 3

    튜플의 두 번째 항목을 기반으로 고유 항목을 가져 오기 위해 itemgetter 및 list comp를 사용하여 튜플 목록 필터링

  4. 4

    jquery를 사용하여 배열의 객체 값을 기반으로 목록 항목의 너비 설정

  5. 5

    Groovy의 열 값을 기반으로 목록 목록의 요소를 필터링하는 방법

  6. 6

    문자열 목록을 기반으로 항목 필터링 / 제거

  7. 7

    맵 함수를 사용하여 목록의 데이터 속성을 jQuery의 배열로 가져 오기

  8. 8

    정적 필터링 값을 기반으로 재 선택 redux를 사용하여 필터링 된 목록을 생성하는 방법은 무엇입니까?

  9. 9

    목록보기는 Flutter의 속성을 사용하여 마지막 행 데이터를 필터링합니다.

  10. 10

    고유 한 배열 항목을 선택 목록으로 필터링

  11. 11

    값 배열을 기반으로 Angular의 JSON에서 선택 항목 필터링

  12. 12

    객체 배열을 사용하여 채우기 및 jQuery를 사용하여 계단식 드롭 다운 목록 필터링

  13. 13

    두 값을 기준으로 배열 목록을 필터링하는 방법

  14. 14

    PropertyName을 문자열 리터럴로 사용하여 LINQ를 사용하여 일반 목록 필터링-역학 사용

  15. 15

    공통 ID를 기반으로하는 하위 목록 그룹을 사용하여 HTML 링크 목록 작성

  16. 16

    Javascript 배열의 문자열 목록을 기반으로 객체를 필터링하는 가장 좋은 방법은 무엇입니까?

  17. 17

    Python-키 값이 다른 목록의 모든 항목을 포함하는지 여부를 기준으로 사전 목록 필터링

  18. 18

    Scala의 Optional 속성을 기반으로 목록 필터링

  19. 19

    .equals를 재정 의하여 Java의 2 개 속성을 기반으로 사용자 지정 개체의 2 개 배열 목록을 비교하는 방법

  20. 20

    .equals를 재정 의하여 Java의 2 개 속성을 기반으로 사용자 지정 개체의 2 개 배열 목록을 비교하는 방법

  21. 21

    NSPredicate를 사용하여 알파벳이 아닌 문자로 시작하는 항목 필터링

  22. 22

    키-배열 쌍을 포함하는 개체를 사용하여 개체 중첩 개체 목록 필터링

  23. 23

    키를 기반으로 Python에서 사전 목록 필터링

  24. 24

    ng-repeat를 필터링하여 객체 속성에서 쉼표로 구분 된 배열 값 목록을 만듭니다.

  25. 25

    Where In을 사용하여 ElasticSearch 배열의 항목에 대한 문서 필터링

  26. 26

    배열 항목으로 목록 필터링

  27. 27

    튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

  28. 28

    jq를 사용하여 필드를 기반으로 객체 목록에서 하나의 객체 필터링

  29. 29

    목록 목록을 사용하여 목록 목록 필터링

뜨겁다태그

보관