programing

핵심 데이터 기본 키

padding 2023. 8. 16. 22:01
반응형

핵심 데이터 기본 키

이것은 어리석게 보일 수 있지만, 저는 여전히 xcdata 모델 파일에서 속성을 기본 키로 표시하는 방법을 찾을 수 없었습니다.영구 저장소는 sqlite 파일입니다.누가 나를 도와줄 수 있나요?

이 경우 고유한 ID를 "검증"하려면 어떻게 해야 합니까?검증 방법 같은 것을 써야 하나요?

옵션은 다음과 같습니다.

  • 사용하다-[NSManagedObject objectID]이 ID는 개체가 처음으로 저장되거나 사용자가 호출할 때까지 임시 ID입니다.-[NSManagedObjectContext obtainPermanentIDsForObjects:error:]
  • 사용CFUUID각 개체에 대한 UUID를 생성하기 위한 함수 제품군-awakeFromInsert방법
  • 모델에 정수를 저장하고 각 개체를 생성할 때 정수를 증분하는 기본 키와 같은 시스템을 만듭니다.

속성이 고유한지 확인하는 좋은 방법은 없습니다.가장 가까운 방법은 작성 시 고유함을 확인한 다음 사용자가 ID를 변경하지 못하도록 하는 사용자 지정 세터 방법을 구현하는 것입니다.

핵심 데이터는 데이터베이스가 아닌 객체-그래프 지속성 프레임워크입니다.기본 키와 같은 것들은 영구 저장소의 구현에 의존하기 때문에 추상화됩니다.

Core Data는 기본 키를 자체적으로 만듭니다. 추가할 필요가 없습니다.를 사용하여 검색할 수 있습니다.

NSManagedObjectID *moID = [managedObject objectID];

때때로 해킹할 때 기본 키의 실제 int가 필요합니다.다음은 그것을 잡을 수 있는 방법입니다.

NSManagedObjectID *yourManagedObjectID = [yourManagedObject objectID];
int yourManagedObject_PK = [[[[[yourManagedObjectID URIRepresentation] absoluteString] lastPathComponent] substringFromIndex:1] intValue];

CoreData가 객체 그래프임에도 불구하고 CoreData가 생성한 SQLite 데이터베이스 데이터를 보면 NSManagedObject의 기본 키를 가져오는 방식은 문제가 되지 않습니다.ii는 CoreData와 하위 레벨 sqlite3 C 라이브러리를 동일한 코드로 함께 사용했으며 레코드를 가져오기 위해 CoreData에서 sqlite3로 기본 키를 전달하는 것이 잘 작동합니다.

프로덕션에서 이 코드를 사용하려는 경우 DB 기본 키가 URI 표현으로 변환되는 방식에 대한 내부 변경 사항이 있을 수 있으므로 코드가 중단될 수 있습니다.

즐거운 시간 되세요.

NSManagedObject를 해킹하지 않음원격 데이터 수집을 관리하기 전에 속성을 빠르게 확인할 수 있는 ID입니다.

유틸리티 방법을 만들었습니다. 여기서 확인하세요.

기본 키를 검색하기 위한 빠른 확장

extension NSManagedObject {
    var primaryKey : String {
        guard objectID.uriRepresentation().lastPathComponent.count > 1 else { return "" }
        return objectID.uriRepresentation().lastPathComponent.substring(from: 1)
    }
}

And for String

extension String
{
    func substring(from : Int) -> String {
        guard self.count > from else { return "" }
        return String(self[self.index(self.startIndex, offsetBy: from)...])
     }
}

차라리 시간 + 클래스 이름을 고유 식별자로 사용합니다.

언급URL : https://stackoverflow.com/questions/901640/core-data-primary-key

반응형