2012-06-08 1 views
1

IB에서 코어 데이터 모델을 생성 할 때 지정해야하는 속성 유형은 String, Date, Integer, Decimal 등입니다.NSDate 및 NSNumber 저장 및/또는 동일한 코어 데이터 속성에 저장

내 질문은 어떻게 저장합니까 동일한 속성에서 NSDate 수 있으며 다른 시간에, 해당 특성에 대한 NSNumber 함께 이번에는 새 엔티티를 추가합니다.

다른 말로하면, 나는 단지 id Object의 동등 물을 coredata에 넣고 싶습니다. 가져온 후 [[Object isKindOfClass[NSDate class]] 또는 NSNumber인지 확인합니다.

나는 transformable에 대해 들어 봤지만, 저장할 사용자 정의 된 객체를 만들지 않습니다. 이것에 대한 모든 조명은 좋을 것입니다.

답변

0

이것은 매우 나쁜 생각입니다. 실제로 날짜는 SQLite에서 숫자로 표시되지만 코어 데이터는 다른 종류의 저장소를 사용할 수 있으므로 작업 방법에 대해 너무 많은 가정을하고 있습니다.

엔터티에 대한 추가 특성 인 numberdate을 지정하는 것이 훨씬 쉽고 간편합니다. 그런 다음 어느 하나가 nil인지 또는 값이 있는지 쉽게 확인할 수 있습니다. 객체에 날짜 또는 숫자가 있는지 알려주는 세 번째 속성을 도입하여 설정하는 것보다 더 좋습니다.

+0

아이디어는 엔티티가 기본적으로 "엔트리 로그"이므로 두 가지 속성, 타임 스탬프 및 값만 사용합니다. Timestamp는 분명히 nsdate이지만, 내 아이디어는 "객체"가되는 "가치"였습니다. 지금은 유일한 요구 사항은 NSNumber 또는 NSDate였습니다. 날짜 항목을 추가하면 값이 날짜로 기록되어야합니다. 또는 거리에 대한 항목을 추가하면 값은 nsnumber가됩니다. 아마도 nsdate를 nsnumber로 변환 한 다음 저장할 수 있습니다. 단 하나의 속성에 하나 이상의 속성을 추가하고 싶지 않습니다. – jasonIM

+0

다시 말하지만, 이것은 잘못된 디자인이라고 생각합니다. 구조화되지 않은 "로그 항목"을 원하면 NSString 형식이어야합니다. 유형을 구분하기 위해 항상 고유 한 체계를 고안 할 수 있습니다 (예 : int 앞에 'i', float에 'f', 날짜에 'd'등). 스캐너를 작성하여 데이터를 올바르게 해석하는 것도 쉽습니다. 그러나 실제 유형을 저장할 수 있다면 왜 거기에 가야합니까? – Mundi

+0

당신의 오른쪽 남자! 나는 그 모든 것을 다시 생각하려고한다. – jasonIM

0

현재 프로젝트에서이 시나리오를 발견했습니다. 값에 int, float, boolean이 포함되어 있으면 NSNumber를 특성으로 사용할 수 있으며 NSDate가 포함되어 있으면 특성은 엔터티의 문자열이어야합니다.

희망 도움말.

+0

OUCH !, 속성으로 transformable을 사용하면 어떨까요? 그게 도움이 되겠습니까? – jasonIM

+0

transformable이 사용되면 작업을 수행하지만 NSPredicate를 사용하여 데이터를 가져 오도록 요청하면 문제가 발생합니다. – iamsult