2014-12-18 4 views
0

알고있는 한, 엔티티의 속성을 프로그래밍 방식이나 Xcode의 편집기가 아닌 Core Data을 통해 고유하게 설정할 수있는 방법이 없습니다. 고유 한 속성 값과의 충돌이있는 경우 특정 관리 대상 객체를 만들 수 없으며이를 처리하는 일부 게시물을 읽었습니다.코어 데이터 : 속성의 유일성을 검사하는 가장 좋은 방법

나는 (예 : Core Data unique attributes) 방식의 몇 가지를 발견했습니다

  1. 이 속성의 값이 이미

존재 여부를 확인하기 위해 사용자 지정 방법의 어떤 종류를 작성하려면 -validateValue:forKey:error:

  • 를 사용하려면 가장 권장할만한 옵션은 무엇입니까?

    감사

  • 답변

    1

    당신은 당신이 validateValue:forKey:error: 또는 사용자 정의 방법 또는 다른 곳에 넣어 여부, 사용자 지정 코드의 어떤 종류를 필요로하기 위하여려고하고있다.

    내장 된 유효성 검사 방법을 사용할지 여부는 실제로 코드를 구성하는 방법에 따라 달라집니다.

    1. 값이 고유한지 확인하십시오.
    2. 그렇다면 새 인스턴스를 삽입하십시오.

    그 이유는 부분적으로는 내재 된 유효성 검사 스키마가 아프기 때문입니다.하지만 대개 그 이유는 객체에 대한 변경 사항을 저장할 때마다 코드가 실행되기 때문입니다. 수표가 validateValue:forKey:error: 인 경우 값이 고유하다는 것을 확인한 후에도 반복해서 실행합니다. 그런 다음 다시해야 할 수도 있습니다. 따라서 가장 좋은 답변은 앱의 작동 방식에 대한 더 큰 그림에 달려 있습니다.

    유효성 검사에 접근하는 간단한 방법은 확인해야하는 키와 값을 식별하는 조건자를 사용하여 가져 오기를 수행하는 것입니다. 다른 대답에 설명 된 것처럼 일반적인 가져 오기 방법을 변경하려는 한 가지 점은 executeFetchRequest:error: 대신 countForFetchRequest:error:을 사용한다는 것입니다. 유효성 검사 중에 기존 객체를 가져와야 할 필요가있는 것처럼 들리지는 않습니다. 존재하는지 여부를 알아야하기 때문에 확인하십시오.

    고유 특성의 유형에 따라이 작업을 통해 수행 할 성능 저하를 줄일 수 있습니다. 예를 들어, 문자열 인 경우. 일치하는 모든 기존 문자열을 확인하는 것은 상대적으로 비용이 많이 듭니다. 반면에 기존의 정수를 확인하는 것은 저렴합니다. 이 경우 고유 한 문자열 값의 숫자 해시를 저장하는 엔터티 형식에 숫자 속성을 추가하는 것이 좋습니다. 유일성을 검사 할 때만 해시를 사용하십시오. 일치하는 문자열을 찾는 것보다 훨씬 빠를 것입니다. NSString은 값을 계산하기위한 편리한 hash 메서드를 가지고 있습니다.

    +0

    자세한 설명 주셔서 감사합니다. – AppsDev