2014-04-30 3 views
0

(MSAccess에서 제공하는) 다음 DTD-XML 파일을 가지고 있으며이를 사용하여 프로그래밍 방식으로 CoreData 모델을 만들 것입니다.CoreData 모델을 DTD-XML 파일에서 프로그래밍 방식으로 만들 수 있습니까?

각 요소는 여기에 나열된 각 ATTLIST 특성과 일대일 관계가있는 엔터티가됩니다.

이것도 가능합니까?

<?xml version="1.0" encoding="UTF-8"?> 

<!ELEMENT league (date, time, version, season, division+)> 

<!ELEMENT date EMPTY> 
<!ATTLIST date 
    year CDATA #REQUIRED 
    month CDATA #REQUIRED 
    date CDATA #REQUIRED 
    day CDATA #REQUIRED 
> 

<!ELEMENT division (team+)> 
<!ATTLIST division 
    id CDATA #REQUIRED 
    label CDATA #REQUIRED 
> 

<!ELEMENT season EMPTY> 
<!ATTLIST season 
    season CDATA #REQUIRED 
> 

<!ELEMENT sports-statistics (league)> 

<!ELEMENT team EMPTY> 
<!ATTLIST team 
    id CDATA #REQUIRED 
    city CDATA #REQUIRED 
    name CDATA #REQUIRED 
    alias CDATA #REQUIRED 
> 

<!ELEMENT time EMPTY> 
<!ATTLIST time 
hour CDATA #REQUIRED 
    minute  CDATA #REQUIRED 
    second  CDATA #IMPLIED 
    timezone CDATA #REQUIRED 
    utc-hour CDATA #REQUIRED 
    utc-minute CDATA #REQUIRED 
> 

<!ELEMENT version EMPTY> 
<!ATTLIST version 
    number CDATA #REQUIRED 
> 

답변

0

물론 가능합니다.

iOS를 사용하는 경우 기본 제공 NSXMLParser을 사용하여 해당 파일을로드하고 내용을 실행할 수 있습니다. 또는 문서를로드하고 파서 콜백을받는 대신 검사하는 것을 선호하는 경우 TouchXML을 추가하십시오. [기본적으로 NSXMLParser은 SAX 스타일 구문 분석을 수행하며 TouchXML은 DOM 스타일을 사용합니다.]

일단 XML을로드하면 모델을 만들 수 있습니다. 핵심 데이터 모델 생성의 모든 측면을 핵심 데이터 API 호출로 사용할 수 있으므로 모델 편집기를 사용할 필요가 없습니다.

  1. 각 요소에 대한 새로운 NSEntityDescription 만들기 NSManagedObjectModel
  2. 의 인스턴스를 만들려면 원하는 것이다. [NSManagedObjectModel setEntities:]을 사용하여 모델과 연결하십시오.
  3. 각 특성에 대해 NSAttributeDescription을 작성하고 엔티티 유형 간의 각 관계에 대해 NSRelationshipDescription을 작성하십시오. [NSEntityDescription setProperties:]을 사용하여이를 엔터티 설명과 연결하십시오.
  4. (선택 사항) NSManagedObjectModel을 저장하면 앱을 시작할 때마다이 작업을 수행 할 필요가 없습니다. NSManagedObjectModel에는 저장할 방법이 없지만 NSCoding을 따르므로 사용하십시오.

모델은 영구 저장소 파일을 추가 할 때까지만 변경할 수 있습니다. 데이터가없는 모델 일 때만 변경할 수 있습니다. 일단 데이터를로드하면 모델을 불변으로 취급해야합니다.