2011-08-02 2 views
0

동일한 sqlite 데이터베이스 내에 두 개의 테이블을 만들려고합니다. 이제이 두 managedObjectModel은 동일한 인스턴스에서 실행되지 않습니다. 설명해 드리겠습니다 ... 일단 응용 프로그램을 실행하면 프로그래밍 방식으로 영구 저장소에 managedObject를 만듭니다. 제가 그 중 하나에 대해 5 가지 속성을 가지고 있다고 가정 해 보겠습니다. 그런 다음 다시 실행하고 영구 저장소에 새 managedObject를 만듭니다. 그러나 이번에는 3 개의 속성 만 사용합니다 ... 어떻게하면이 작업을 수행 할 수 있습니까? 속성의 양이 일치하지 않기 때문에 현재 충돌이 발생합니다.두 개의 서로 다른 managedObject와 하나의 sqlite 데이터베이스?

감사합니다.

+0

귀하의 문제에 대한 설명에 매우 혼란 스럽습니다. 이 앱에서 핵심 데이터를 사용하고 있습니까? 데이터 모델에 새 엔터티를 추가하고 있습니까? 당신이 달성하고자하는 것을 더 분명하게 보여줄 수있는 코드가 있습니까? –

+0

코어 데이터를 사용 중입니다. xcdatamodel을 사용하는 대신 managedObjectModel을 프로그래밍 방식으로 만듭니다. managedObjectModel은 X가 얼마인지에 따라 X 양의 속성을 만듭니다 (X가 다른 곳에서 수집되었다고 말하면서 항상 동일하지는 않습니다). 따라서 응용 프로그램을 한 번 실행하고 X = 5이면 managedObjectModel은 attribute1 ... 등의 5 개의 특성을 만듭니다. 그런 다음 다시 실행하고 X = 3이면 managedObjectModel이 3 개의 특성을 작성합니다. 이제는 하나의 SQLite 데이터베이스 만 사용하기 때문에 속성 값이 같지 않으면 충돌이 발생합니다. – Robert

+0

오류 : '이 NSPersistentStoreCoordinator에는 영구 저장소가 없습니다. 저장 작업을 수행 할 수 없습니다. ' 나는 그것이 속성 양 충돌 때문에 그것이라고 확신한다. 왜냐하면 나는 X를 일정한 양으로 설정했기 때문에 오류를 얻지 못하기 때문이다. – Robert

답변

1

가장 간단한 대답은 프로그래밍 방식으로 데이터 모델을 만들지 않는 것입니다. 디자인 타임에 만들어야하며 수정되지 않아야합니다. 대신, 사용자의 요구를 충족시킬만큼 충분히 유연하게 데이터 모델을 설계해야합니다. 예를 들어 가변 개수의 속성을 가진 하나의 엔티티를 만드는 대신 다른 엔티티와 일대 다 관계가있는 엔티티 두 개를 만들고 가변 개수의 속성에 어떤 정보가 있는지 저장하십시오.

+0

흠 그럴듯한 해결책처럼 보입니다. 좋습니다, 다른 모델에 "속성"이라는 관계를 만듭니다. attribute1 ... attribute2 등을 어떻게 액세스합니까? 그리고이 다른 모델에는 정확히 무엇이 포함되어야합니까? – Robert

+0

여기서부터 시작하겠습니다. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html. 그리고 분명히 말하자면 새로운 모델이 아닌 새로운 개체를 만드는 것입니다. 당신의 관계는 첫 번째 엔티티의 속성 중 하나가 될 것이며 두 번째 엔티티 유형의 객체의 NSSet을 반환합니다. 그것이 담고있는 정보는 전적으로 당신에게 달려 있습니다. –

+0

그래서 기본적으로 [entity valueForKey : @ "attributes"]를 요청하면 값의 NSSet을 반환하겠습니까? 그리고 죄송합니다. 프로그래밍 방식으로 여러 번 해보았 기 때문에 엔티티라고하는 것을 잊어 버렸습니다. – Robert

관련 문제