2010-05-18 3 views
0

XML을 반환하는 웹 요청을 통해 현재 업데이트 된 테이블 뷰가있는 프로젝트에서 작업하고 있습니다. 내 XML 파싱 클래스에 WebService를 사용하여 TableView를 업데이트하고 CoreData에 저장

-(int)numberOfRowsInTableView:(NSTableView*)tv 

-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn*)tableColumn row:(int)row 

을 구현하고, 서버에서 아래로 끌어 데이터로 업데이트 테이블을 가지고있다.

코어 데이터를 사용하여 풀다운 데이터를 저장하여 테이블을 저장 /로드 할 수 있습니다. 그런 다음 나중에 웹 요청이있을 때 응용 프로그램을 시작하면 이미 존재하지 않는 데이터 만 추가됩니다. XML은 릴리스 날짜별로 정렬되므로 나중에 코어 데이터 저장소에서로드되지 않은 릴리스 날짜를 확인하고 최신 항목 만로드합니다.

어떻게 구현합니까? 나는 아주 새로운 코코아 개발자이지만, 전체 Hillegass 책을 통해 갔다. 정말 고마워.

답변

2

여기에서 두 가지 중요한 부분이 있습니다. XML 파싱과 핵심 데이터 지속성입니다.

(1) NSXMLParser 주변에서 this wrapper을 사용하여 XML 파일을 읽는 데 성공했습니다. 더 최근의 라이브러리에 대해 들어 보았지만 아직 사용하지는 않았지만 이것은 당신에게 출발점을 제공 할 수 있습니다. 링크 된 기사는 사용법에 대해 상당히 철저합니다.

(2) 핵심 데이터로 수행하려는 첫 번째 작업은 새로운 데이터 모델을 만드는 것입니다. 거기에서 모델 클래스 (@dynamic 속성 포함)를 만들어 코어 데이터 (NSManagedObjectContext 및 해당 ilk와 같은 것을 사용)를 통해 데이터베이스와 쉽게 상호 작용할 수 있습니다. 당신은 부드러운 소개 here을 얻을 수있다, 또는 조금 더 멀리 here에 따라 뛰어 오르십시오.

핵심 데이터 구현은 특히 새로운 개발자에게 중요하지 않습니다. 그들이 발생했을 때 특정 주제에 대한 자습서를 찾는 것이 좋습니다.

+0

감사합니다. 지금은 다소 효과가 있지만 핵심 데이터를 매우 오래된 방식으로 사용하고있는 것처럼 느껴집니다. (관리 대상 개체 만들기, 값 설정, 필요한 개체를 얻기 위해 조건부 검색 사용 ...). @dynamic 속성을 사용하면 현재 수행중인 작업이 단순해질 수 있다고 생각합니다. – jcady

+0

동적 속성은 유용한 약식으로, 합성 속성과 비슷한 의미입니다. 당신이 묘사 한 것이 반드시 고풍으로 들리는 것은 아닙니다. 어쨌든 XML 설명의 객체를 Core Data의 관리되는 엔티티로 변환하기위한 접착제 코드를 작성해야합니다. 이는 사용자의 접근 방식과 비슷합니다. – warrenm

+0

질문자와 같은 Mac 프로그래머는 Cocoa와 달리 Cocoa가 이미 NSXMLNode 클래스를 가지고 있으므로 래퍼가 필요하지 않습니다. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSXMLNode_Class/ –

1

저는 지금 당신과 같은 배에 있습니다 - 저는 코코아를 배우면서 Hillegass 책을 읽었으며 웹 서비스에서 가져온 코어 데이터 앱을 만들고 있습니다. 웹 서비스에서 테이블 뷰를 채우는 방법을 알아 냈습니다. 그러나 내가하는 방식이 올바른 방법인지 모범 사례인지는 알 수 없습니다. 다음은 내가 한 일입니다.

웹 서비스에서 가져온 엔티티와 동일한 속성을 사용하여 핵심 데이터 모델을 만들었습니다. Interface Builder에서 테이블 뷰를 생성하고 테이블 열과 핵심 데이터 속성 사이의 바인딩을 설정했습니다. 앱이 시작되면 웹 서비스에서 데이터를 가져 와서 항목을 반복하고 새 항목을 만듭니다. 그런 다음 테이블 뷰는 새 데이터를 자동으로 인식하고 데이터를 채 웁니다. 내가 동기화 문제 (새 항목을 추가하는 기존 업데이트)를 달려하지 않은 JSON to Persistent Data Store (CoreData, etc.)

하지만이 문서는 내가 할 때를위한 북마크 :

Core Data book from Pragmatic Programmers뿐만 아니라,이 질문에 모두가 나에게 도움이 http://developer.apple.com/Mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html#//apple_ref/doc/uid/TP40003174

+0

팁 주셔서 감사합니다. 여기에 나온 대답과 내가 읽은 튜토리얼을 토대로 비슷한 일을하고 있습니다. XML 노드를 반복하고 적절한 관리 객체를 만듭니다. – jcady

관련 문제