2010-08-12 8 views
0

웹 서버에서 데이터를 다운로드하는 iPhone 응용 프로그램에서 작업 중입니다. 가끔씩은 아니지만 이러한 다운로드 결과를 캐시하려고합니다. 내가 다루고있는 엔티티는 이벤트입니다. 이벤트는 다음과 같은 방법으로 UI에 나타납니다 키워드 기반 검색 모든 개체가 저장되지 않을 때 모델로 코어 데이터 사용

  • 좋아하는 이벤트 목록의 결과로 위치 기반 검색
  • 의 결과로

    세 번째 경우에만 로컬 DB에 데이터를 저장하는 것이 필요합니다 (또는 바람직합니다). 즉, 이벤트를 다운로드하고 사용자가 즐겨 찾기에 추가하기로 결정한 경우에만 로컬로 저장됩니다.

    내가 다운로드하는 데이터가 JSON 형식임을 아는 것이 도움이 될 수도 있습니다.

    일정한 모델 개체를 사용하여 이벤트를 나타내려고하지만 때로는 데이터베이스에 저장되기도하고 때로는 나타나지 않을 수도 있습니다. 내 View Controller가 객체가 어디서 왔는지를 알아야하거나 신경 쓰지 않아야하고, 로컬 캐시에서 가져온 이벤트를 표시 할 수 있어야하거나, 상황을 처리 할 수있는 특별한 코드가없는 다운로드에서 이벤트를 표시 할 수 있어야합니다.

    그러므로 NSManagedObject (또는 그 하위 클래스)를 사용하여 이벤트를 나타낼 수 있습니까? 그렇지 않으면 두 개의 모델 객체 (하나는 내 사용자 정의 객체, 다운로드 된 이벤트와 저장되지 않은 이벤트)를 처리하고 다른 하나는 저장된 이벤트에 대한 NSManagedObject 하위 클래스 (둘 모두 동일한 이벤트 객체)를 다루는 것으로 보입니다. 속성이지만 근본적으로 다른 것들입니다.

    또는보기 컨트롤러에서 기본 데이터로 요청을 프록시하는 방법을 알고있는 일종의 데코레이터 개체 (또는 프로토콜)를 만드는 세 번째 옵션이 있습니까? NSManagedObject 및 때로는 사전이 생성되는 경우도 있습니다. JSON에서?

    여기에서 권장되는 해결책은 무엇입니까?

  • 답변

    0

    가장 쉬운 해결책은 NSManagedObject-initWithEntity:insertIntoManagedObjectContext: 메서드를 통해 NSManagedObjectContext없이 NSManagedObject 인스턴스를 만드는 것입니다.

    개체를 실제로 유지하려면 엔터티의 컨텍스트를 설정하고 컨텍스트를 저장해야합니다.

    +0

    'initWithEntity'가 객체 컨텍스트에 대해 nil 값을 가질 수 있다는 것을 몰랐습니다. 흥미 롭 군. –

    +0

    환상적입니다, 감사합니다 마커스. – higgis

    관련 문제