2013-04-14 3 views
1

그래서 iOS 인벤토리 앱에 대한 작업을 시작했습니다. iOS 인벤토리 앱은 꽤 유연 해지고 싶습니다. 내가 원하는 것은 사용자가 제품 카테고리를 정의 할 수 있고 색상, 크기, 이미지, 스타일 등의 자유도를 정의 할 수 있다는 것입니다. 이러한 속성을 이미 포함하고있는 데이터 모델을 설계하여이 작업을 수행 할 수 있음을 알고 있습니다. 그러나 사용자가 항상 각각을 필요로하지는 않을 것이고 (더 문제가되는) 내가 생각하지 못했던 (재료 또는 브랜드와 같은) 다른 속성이 필요할 수도 있습니다. CoreData를 사용하여 이러한 종류의 유연한 데이터 모델을 구축 할 수있는 방법이 있습니까? 나는 plists를 사용하여 그것을 할 수 있다고 확신하지만, 나는 술어를 언급하는 것뿐만 아니라 iCloud와 NSFetchedResultsController를 이용하고 싶다.CoreData 사용자 정의 데이터베이스 구조?

데이터베이스를 사용하여 구현할 수없는 것입니까? 이제 내가 문제를보고 있는데, 강제 된 구조가 너무 제한적일 수 있습니다 ... 레코드를 추가 한 후 사용자가 속성을 변경하면 어떻게 될까요? 상점 이전을 처리해야합니까? 응. 이 미친인지 아닌지

...

확인, 여기에 또 다른 접근 방식, 어쩌면 누군가가 댓글 수 있습니다. 내가 생각할 때, 사용자가 추가 할 수있는 모든 속성은 기본적으로 동일한 유형입니다. 문자열 태그 (속성 이름, 예 : '색상')와 일련의 문자열 값 (예 : '빨강', '숯', '청색'등). 그렇다면 왜 엔티티 대신 속성과 관계를 맺지 않는 것이 좋을까요? 이제는 객체 모델에 엔티티의 세 가지 항목, 즉 MerchCategory이 있습니다.이 항목은 인벤토리의 개별 항목 인 MerchItem과 항목이 가질 수있는 품질 인 Dimension입니다. .

MerchItemsku 특성을 가지며, Dimension에 대다 관계뿐만 아니라 MerchCategory에 대일 관계.

Dimensionnamevalue 속성 및 categoriesitems 다 대다 관계를 맺고있다.

그럴듯한 스키마입니까? 각자의 이름을보고 각 차원을 쿼리하고 값을보고 각 구성을 계산할 수 있습니다 ... 그리고 사용자는 NSEntityDescription을 사용하지 않고 새로운 차원을 추가 할 수 있습니다. . 생각?

+0

왜 그런 식으로 작동하지 않을지 모르겠군요. 사실 핵심 데이터 프레임 워크의 기능과 유연성을 활용하는 좋은 방법 인 것 같습니다! 삭제 방법을주의 깊게 설정했는지 확인합니다. 다른 관계가없는 매달린 엔티티 또는 삭제 될 때 다른 엔티티를 제거하는 계단식 삭제로 끝나는 것은 매우 쉽습니다. 행운을 빕니다! – JiuJitsuCoder

+0

멋지다, 고마워! 내가 대답 해 주면 대답을 올릴거야. – samson

답변

0

엔티티를 프로그래밍 방식으로 NSManagedObjectModel에 추가하고, NSEntityDescription을 사용하고, NSPropertyDescription을 사용하여 엔티티에 속성을 추가해야한다고 생각합니다. 마이그레이션이 어떻게 작동하는지 잘 모르겠습니다.

1

How to add attributes to an existing Core Data entity (object) programmatically?을 참조하십시오.

매우 큰 작업을하고 있습니다. 그것은 할 수 있습니다. FileMaker는 FileMaker MobileBento for iPad을 사용하여이 작업을 수행합니다. 그러나 나는 그들이 제품에 더 많은 사람들을 투자했다고 생각한다.

+0

굉장합니다. 그래서 나는 주말에이 일을 끝낼 수 없다고 생각합니다. 그 링크는 도움이됩니다. 내가 얼마나 많은 부분을 커버 할 수 있는지 보겠습니다. 기본 문제는 마이그레이션이라고 생각합니다. – samson

0

이러한 속성으로 가져올 필요가없는 한 사용자 정의 속성을 추가 및 뺀 코드를 작성하여 nsarray에 저장하고 nsdata에 모두 묶어서 핵심 데이터에 저장할 수 있습니다. 하나의 nsdata 속성으로 나머지를 정렬 및 반입하고 저장할 수 있어야하는만큼 고정 된 속성을 갖는 엔티티를 간단하게 작성할 수 있습니다.

+0

그래, 그 생각. 불행히도, 나는 그들에 의해 가져와야 할 필요가 있습니다. 그것은 전체적인 것입니다. 그런 식으로 NSData 패키징을 사용한다면, 모든 것을 plist에 넣을 수도 있습니다. – samson

0

비슷한 일을하고 있는데, "Properties"라는 새로운 핵심 데이터 클래스를 만드는 것에 대해 생각하고 있습니다. 그래서 "많은 속성과의 관계"를 갖도록 내 개체를 설정할 수 있습니다. 각 속성에는 핵심 데이터 문자열 유형 속성 인 "속성", "유형"및 "값"이 있습니다.

플라이에서 제품 속성을 추가 할 수있는 충분한 유연성이 있어야한다고 생각합니다. 이 문제가 발생하면 여기에 게시 할 것입니다.

관련 문제