2014-03-25 3 views
-1

core-data을 사용하여 데이터베이스에 값을 삽입하고 중복도 허용되는지 확인하십시오.코어 데이터를 사용하여 삽입 할 때 복제

검색 한 결과 내용을 먼저 가져온 다음 일치하지 않으면 현재 데이터와 일치해야하지만 삽입이 가능하지 않은 것으로 나타납니다.

일부 대안을 제공해주십시오.

+1

가 왜 가능하지 않습니다 다음 시도? –

+0

중복 검색을 어떻게 확인하고 있습니까? – AppleDelegate

+0

왜냐하면 100 개의 필드가 있으면 100 개의 모든 필드를 일치시켜야하고 (PK가없는 경우) – user1672134

답변

1

맞습니다. Core Data는 객체 그래프를 관리하기위한 API를 제공합니다. 또한 객체 그래프를 유지할 수있는 기능을 제공합니다.

프로그래머는 이러한 고유성이 필요한 경우 개체의 고유성을 보장해야합니다.

일반적으로 각 개체에 대한 키 필드가 있습니다. 그런 다음 동일한 키 필드 값을 사용하여 객체를 검색 할 수 있습니다. 그러한 객체가 발견되면 해당 객체의 정보를 업데이트 할 수 있습니다. 그러한 오브젝트가 없으면 새 오브젝트를 작성할 수 있습니다.

어쨌든 프로그래머는 독자성을 보장해야합니다. 이를 수행 할 수있는 많은 방법이 있습니다.

대부분의 개체 표현에는 고유 한 키 필드가 있습니다. 키가 전체 객체 상태 인 경우 객체 레이아웃에 고유 한 키를 추가하거나 전체 객체의 암호화 해시를 키 필드로 사용할 수 있습니다.

+0

은 제가 참조 할 수있는 링크 나 다른 솔루션을 제공 할 수 있습니다. – user1672134

+0

다른 해결책은 없습니다. 고유성을 보장해야합니다. 나는 원래의 질문에 자신의 의견으로 게시 한 링크를 클릭하고 클릭했습니다. 이 링크는 핵심 분야가 무엇인지 결정하면 좋은 정보를 제공합니다. 우리 중 누구도 그렇게 할 수는 없습니다 ... 당신 스스로해야합니다. –

+0

감사합니다. – user1672134

0

이 (가)

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyEntityName"]; 
     [request setPredicate:[NSPredicate predicateWithFormat:@"keyToBeCompared = @"DuplicateString"]]; 


     NSError *error = nil; 

     MyEntityName *objectInstance = [[self.managedObjectContext executeFetchRequest:request error:&error] lastObject]; 

     if (objectInstance && !error) { 
      NSLog(@"duplicate object found"); 
     // Jst update the keyValue 
      objectInstance.keyToBeCompared = @"New Updated value"; // This will automatically  update the duplicate value 

     } 
관련 문제