2012-04-30 1 views
0

내 nsobject 클래스에서 사용할 코어 데이터를 설정하려고하면 완전히 손실됩니다. 내 기존 프로젝트에 coredata를 추가하므로이 모든 것을 파악하기가 어렵습니다. 이 때문에 나는 현재 응용 프로그램에서 coredata 구현해야하는 샘플 코드를 얻기 위해 coredata 가진 새 프로젝트를 시작했습니다. 그러나 궁금해 오전 이 coredata 샘플 코드를 개체를 사용하려면 어떻게 변경해야합니까 클래스 대신보기 컨트롤러/tableview 템플릿 코드는 무엇입니까?객체 클래스와 함께 coredata를 사용하려고 시도 ** 실패 **

내 질문에 대한 답을 얻기 위해 현재 프로젝트에서 내가 무엇을하고 있는지 설명 할 것입니다.

내가 만든 두 클래스가있는 사용자 지정 데이터베이스 엔진이있어서 여러 가지 데이터 집합을 표시하는 여러 개의 viewcontroller가 있습니다. 하나는 NSURLRequest/NSURLConnection을 사용하여 DBEngine으로 보내지는 모든 종류의 데이터를 가진 패킷을 생성하는 요청 클래스입니다.

내 사용자 지정 요청 클래스에서 NSURLRequest/NSURLConnection 대리자를 사용하고 있으므로 DBEngine에 요청을 보내면 connectionDidFinishLoading 대리자 메서드 내에서 응답을받을 때까지 기다린 다음 응답 데이터를 내 응답 클래스에 전달합니다. 같은 ....

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    // depending on what sorta request is made will depend on how the data shuld be handled. 
    if ([methodName isEqualToString:@"GetDBVersion"]) { 
     //tbc 
    } 
    else if ([methodName isEqualToString:@"GetManuf"]) 
    { 
     [engineResponses GetManuf:receivedData]; 
    } 
    else if ([methodName isEqualToString:@"GetNonM"]) 
    { 
     [engineResponses GetNonM:receivedData RestrictionID:RestrictionID]; 
    }   
} 

내가 전까지 괜찮 내 engineResponses 클래스의 새로운 인스턴스를 생성하고 이렇게함으로써 나는 이렇게 다른 인스턴스를 생성하는이 같은 클래스를 통해 응용 프로그램 위임의 컨텍스트를 전달하는 시도 그것은 작동하지 않는 것들과 같습니다 ....

따라서 abov e 나는 내 호의에서 작동하도록 템플릿 코드를 편집 할 수있는 방법을 궁금해. 나는 내 explination에서 명확 해 졌으면 좋겠다. 지난 2 일 동안이 질문을 완벽하게하기 위해 지난 시간을 보냈다. 이 물건을 알아 내려고 애 쓰고있는 나의 꼬리를 쫓고있다. 나는 처음으로 코레 타타 (coredata)와 메신저 (imerata)와 함께 일했다. 나는 그것을 비범 한 방식으로 사용하고있는 것 같기 때문에 열심히 그것을 찾는다. ...

도움이 될 것입니다 혹시 고맙게 여길 것입니다. 더 많은 코드 예제 나 더 나은 설명이 필요하면 .. 도움을 얻을 수있는 모든 것을 할 것입니다 ..

+0

코어 데이터는 로컬 응용 프로그램 저장에 사용됩니다. 그러나 당신은 원격 데이터베이스 (NSURLConnection 등)를 설명하는 것 같습니다. 핵심 데이터를 사용하는 것에 대해 자세히 설명해 주시겠습니까? 모든 Core Data 객체는 기본적으로 객체 인 NSManagedObject에서 상속받습니다. 이 페이지를 보셨습니까 : http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started? – borrrden

+0

내 요청에 따라 서버에서 반환되는 NSData (NSData 형식의 값 목록)를 저장하기 위해 coredata를 사용하고 있습니다. 이후에는 캐시와 같은 핵심 데이터를 사용하여 db 버전이 변경되고 내 coredata 객체의 데이터를 업데이트해야합니다.나는 애플이 NSURLConnection 델리게이트 (캐싱) 등의 형태로 제공하는 더 나은 해결책이 있다는 것을 이해한다. 그러나 DBUngine에 대해 설명 된대로 커스텀 헤더를 사용하기 때문에 좀 더 자유로운 캐싱에 대한 필요성과 대화하고있다. 누워서 dbengine와 의사 소통을해야합니다 –

+0

나는 아마도 내 문제를 해결했을 것 같아요. 그러나 내 coredata에 아무것도 있는지 알아내는 데 도움이 필요합니다. 기본적으로 내 engineResponses에 액세스하기위한 싱글 톤 디자인 패턴을 설정했습니다. 꽤 확신이 객체 클래스의 두 인스턴스를 초기화했다. 한 번 내 다른 객체 클래스와 appdelegate에서 다른 ... 이제 데이터가 실제로 coredata 객체에 있다면 지금 테스트 방법을 찾아야합니다. 하지만이 작업을 수행하는 방법에 대해 완전히 확신하지는 않습니다. –

답변

0

오케이 그래서 여러 인스턴스를 선언 할 때 문제가 발견되었습니다. 같은 대상의 .. 그래서 내가해야 할 일은 완벽하게 작동하도록 싱글 톤 디자인 패턴을 사용하는 것이 었습니다.

많은 사람들이 싱글 톤을 싫어하지만이 문제를 해결하는 다른 방법은 무엇입니까? 어떤 제안이라도 대단히 감사하겠습니다.

또한 내가 이후 appdelegate에 storeURL을 로깅하여 DB를 확인한 다음 goto 파일에 dir을 붙여 복사하여 xcode에 sqlite db를 열어서이 작업을 알았습니다. 모든 값은 다음과 같습니다. 거기 완벽하게.

+0

싱글 톤 패턴은 분명히 자신의 용도가있다 – danielbeard

+0

LOL, yep .. 나는 그렇게 생각한다. 제가 유니에서 일했을 때, 제 프로그래밍 스탭 몇 명은 그들에 대해 많이 유용하고 그들이 얼마나 유용했는지에 대해 이야기했습니다.하지만 객관적인 C 언어가 아닌 다른 언어에 대한 것이 었습니다. 내가 싱글 톤과 ObjC에 대해 stackoverflow에서 아무 것도 읽지 않을 때 많은 싫어하는 사람이 있습니다. 나는 단지 내가 잘못한 일을하지 않도록하고 싶다. –

+1

http://nachbaur.com/blog/smarter-core-data 체크 아웃 –