2014-04-02 3 views
0

I이 등 이름, 아티스트 이름, 엄지 손가락 이미지어떻게 NSObject의 클래스를 사용하여 NSManaged 객체 클래스를 사용하는

내가 데이터를 다운로드로이 클래스를 사용 후 그 클래스에 정보를 저장 등의 트랙 정보를 포함 NSObject 클래스 이름 TrackInfo 파싱 ​​데이터. 이제 일부 데이터를 표시해야하는 다른 탭이 있습니다. 이것은 trackInfo와 같은 종류의 데이터입니다. 하지만 앱이 오프라인 일 때 NSManagedObject을 만들어야합니다. trackinfo과 같습니다.

NSManagedObject 또는 Vice-Versa 대신 NSObject 클래스를 사용할 수 있습니까?

내가 기본적으로 원하는 것은 Trackinfo (NSObject 클래스) 또는 오프라인에있을 때 데이터를 저장하는 데 사용되는 NSManagedObjectClass 중 하나의 클래스에서 트랙 정보를 표시해야한다는 것입니다.

+0

raywenderlich의 핵심 데이터 튜토리얼을 확인 했습니까? – Mohit

+0

예, NSObject 클래스를 사용하면서 NSmanagedObject 클래스를 사용할 수 있습니까? –

+1

다른 객체와 마찬가지로 사용할 수는 있지만 관련 정보가 모두 managedObjectContext에 저장되어 있기 때문에 다른 nsobject처럼 초기화 할 수 없습니다. 그래서 그것 대신 그들은 비슷하게 작동합니다. – nsuinteger

답변

1

짧은 대답은 네입니다. 방법? 유용한 토론 Organising Core Data for iOS을 찾을 수 있습니다.

긴 대답은 문서에서 찾을 수 있습니다.

NSManagedObject는 코어 데이터 모델 객체의 필요한 모든 기본적인 동작을 구현하는 일반적인 클래스입니다. 직접 서브 클래스 인 NSObject (또는 을 상속하지 않는 다른 클래스 )을 관리 객체 컨텍스트와 함께 사용할 수 없습니다. 은 항상 이 아니지만 NSManagedObject의 사용자 정의 하위 클래스를 만들 수 있습니다. 사용자 정의 논리가 필요하지 않은 경우 완전한 객체 그래프 을 NSManagedObject 인스턴스로 형성 할 수 있습니다.

관리되는 오브젝트 (객체가 나타내는 엔티티의 이름과 속성 및 관계 이름을 포함) 오브젝트 대한 메타 데이터를 제공하는 개체 정보 (인스턴스 NSEntityDescription의 )와 연관되고 함께 개체 그래프의 변경 내용을 추적하는 관리 대상 개체 컨텍스트 관리 대상 개체가 핵심 데이터와 함께 사용하도록 올바르게 구성되어 있어야합니다. 관리 객체를 직접 인스턴스화하는 경우 이니셜 라이저 (initWithEntity:insertIntoManagedObjectContext:)를 호출해야합니다.

귀하의 질문에 대해서는 달성해야 할 항목에 따라 다릅니다. 장치와 서버 간의 동기화 메커니즘을 수행하는 것이 목표라면 1) TrackInfo 엔티티가있는 모델 2) SQLite와 같은 영구 저장소에 의존하는 핵심 데이터 스택을 설정해야합니다. 그런 다음 해당 엔터티에 대한 수정을 고려하여 TrackInfo을 수정해야합니다. 예를 들어 dirty 플래그 속성 (0 또는 1) 또는 timestamp입니다. TrackInfo에서 수정하면 해당 속성이 업데이트됩니다. 연결이 복원되면 해당 속성에 대해 쿼리하고 서버와 동기화해야합니다. timestamp을 선택하면 서버는 쿼리 할 최신 타임 스탬프가 무엇인지 밝혀야합니다.

+0

예 : NSObject로 NSmanagedObject 클래스를 사용하는 방법에 대한 주요 관심사는 NSEntityDescription * entity = [NSEntityDescription entityForName : @ "trackInfo"inManagedObjectContext : myContext ]; id object = [[trackInfo alloc] initWithEntity : 엔터티 insertIntoManagedObjectContext : nil]; ' 그래서 데이터베이스에 영향을 미치지 않습니다. –

+1

컨텍스트는 일종의 컨테이너입니다. 저장하지 않으면 개체가 영구 저장소에 저장되지 않을 수 있습니다. 가능한 대답은 작동하지 않습니다. @DkKumar –

관련 문제