2012-09-25 5 views
0

코어 데이터를 처음 사용하는 경우 xCode 프로젝트의이 부분에 어려움이 있습니다.사용자가 새 속성을 작성하여 테이블에 새 필드를 추가하는 방법

내가 핵심 데이터 엔티티 "사람"을 만들었으며이 엔티티는 다음과 같은 속성이 있습니다

  • 이름을;
  • 연령;
  • 생일
  • 주소;

이 속성은 tableview에 표시됩니다. 여태까지는 그런대로 잘됐다.

내 문제는 내가 테이블이하려는 인 셀 그래서 사용자가이 이미 생성 된 속성에 추가 정보를 추가하고자 할 때 그는 단지 셀을 클릭 또는 "행 추가" "필드 추가" 필드 이름과 유형을 선택합니다.

예를 들어 테이블의 상세보기에서 사람의 "전화 번호"를 원하면 새 필드 "전화 번호"의 이름을 지정하고 "번호"유형을 선택합니다. 그런 다음 사람의 전화 번호를 추가 할 수있는 추가 필드가 있습니다.

코어 데이터에서 어떻게 수행 할 수 있습니까? 사용자가 엔티티에 새 속성을 수동으로 추가하고 형식을 선택하는 방법이 있습니까? 가장 좋은 방법은 무엇입니까? 감사.

답변

0

목적이 개체 지속성이고 개체에 동적으로 새 속성을 추가 할 수 없기 때문에 이것이 핵심 데이터에서 직접 가능하다고 생각하지 않습니다. name, value (문자열) 및 data type 필드를 가진 "추가 속성"엔티티에 대한 대다 관계를 사용하여 어느 정도 위조 될 수 있습니다.

저는 최상의 옵션을 사용하여 SQLite를 사용하여 즉시 테이블 구조를 수정할 수 있다고 생각합니다. (http://www.sqlite.org/lang_altertable.html)

1

코어 데이터로 원하는 것을 정확히 수행 할 수 없습니다. 디자인의 새 버전을 만든 경우를 제외하고 코어 데이터는 구조를 변경할 수 없지만 xcode에서는이를 수행합니다.

그러나 쉽게 f.ex라는 다른 테이블을 추가 할 수 있습니다. 정보는 사람에게 단일 연결로 연결되며 정보 테이블에 많은 사람을 다시 연결하는 사람이 있습니다.

이렇게하면 원하는만큼 필드와 값을 추가 할 수 있습니다. 물론 추가하는 모든 추가 필드는 동일한 사람을 따르므로 cellPhone 필드를 사용하려면 해당 필드를 모두에 추가해야합니다.

직접 SQL을 사용하고 코어 데이터를 사용하지 않는 것이 좋습니다. 핵심 데이터는 데이터베이스가 아니며 객체 저장소이기도하고 iOS 개발을 잘하게되면 그 차이를 이해할 수 있습니다. 처음 생각했던 것보다 훨씬 큽니다.

FMDB라는 SQLite는위한 훌륭한 높은 수준의 라이브러리가있다, 당신은 여기 github의에서 찾을 수 있습니다 https://github.com/ccgus/fmdb 여기

당신은 무엇 불구하고, 즉석에서 "테이블 변경"과 같은 직접 SQL 쿼리를 수행하는 등의 작업을 할 수 있습니다 당신은 이후에 아주 간단하지 않습니다, 그것은 할 진짜 재미있는 프로젝트가 될 수 있습니다.

행운을 빈다.

0

나의 마지막 회사는 이와 비슷한 일을했지만 그렇게 사소하지는 않다. 나는이 코드에 접근 할 필요가 없기 때문에 이것은 메모리에있을 것입니다.

  • 당신은 모델 객체가이 턴에 도착/설정하는 원시적 인 방법을 드라이브에 대한 getter와 setter를 제공해야

  • (사전 될 것이다) 당신의 엔티티에 변환 가능한 속성을 제공 이 t를 업데이트

  • 가 읽고 -objectForKey 및 -setObject forKey의 라인을 따라 게터/세터를 제공하고 당신이 '잘못'으로 이야기 할 때 값

  • 쓰기 속성 그 엔티티의 사전

요약하면, 키 값 쌍 사전을 유지하십시오. 아마도 당신은 필요에 따라 초기화되고 갱신되는 그림자 사전을 유지할 것입니다. 이 코드를 보았을 때부터 약 4 년이 지났습니다. 그러나 당신은 아이디어를 얻어야합니다. 마술과 같았습니다. 임의의 키/값 쌍 (문자열 키 및 NSCoding 호환 값 가정)을 임의로 설정할 수 있으며 사전에 현재 키 집합을 요청하여 키를 요청할 수 있습니다.

관련 문제