2012-01-04 6 views
2

저는 델리게이트에 NSManageObject를 저장하려고 할 때 많은 문제가 있으며, 객체를 읽는 데 최악의 문제가 있습니다. 내가 할 때 첫 번째보기에서NSManagedObject를 appDelegate에 저장하려고 시도했습니다.

- (void) setCar:(Garage *)Car 
{ 
    car = Car; 
} 
- (void) setTrip:(Trips *)Trip 
{ 
    trip = Trip; 
} 
- (Trips *) gettrip 
{ 
    return trip; 
} 
- (Garage *) getcar 
{ 
    return car; 
} 

:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
trip = (Trips *)[NSEntityDescription insertNewObjectForEntityForName:@"Trips" inManagedObjectContext:context]; 
[appDelegate setTrip:trip]; 

가 보인다 설정하고 얻을

@class ViewController; 
@class RootViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
{ 
NSManagedObjectModel *managedObjectModel; 
NSManagedObjectContext *managedObjectContext; 
NSPersistentStoreCoordinator *persistentStoreCoordinator; 
Trips *trip; 
Garage *car; 
} 

@property (strong, nonatomic) UIWindow *window; 

@property (strong, nonatomic) ViewController *viewController; 
@property (strong, nonatomic) RootViewController *rootviewcontroller; 

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; 
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; 
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; 
@property (nonatomic, retain) Trips *trip; 
@property (nonatomic, retain) Garage *car; 

- (NSString *)applicationDocumentsDirectory; 
- (void) setCar:(Garage *)Car; 
- (void) setTrip:(Trips *)Trip; 
- (Trips *) gettrip; 
- (Garage *) getcar; 

@end 

완전한 방법이 같다 : 내 대표는이 같은 것입니다 NSLog (@ "% @", [appDelegate gettrip])를 수행하더라도 OK입니다. , 문제가없는 객체를 보여줍니다. 그러나 다른보기에서 [appDelegate gettrip]을 사용하여 동일한 여행을 읽으려고하면 실제로 작동하지 않습니다. 실제로 NSLog는 객체가 Trip이 아닌 Garage 유형이라고 말합니다.

내가 뭘 잘못하고 있는지 모르겠다. 도움.

+0

'- [NSEntityDescription insetNewObjectForEntityForName : inManagedObjectContext :]'는'id'를 반환하므로 반환하는 객체를 형 변환 할 필요가 없습니다. –

+0

여행 및 자동차 속성에 대해 rigmarole 메서드를 구현하고 멤버 변수를 선언하는 이유는 무엇입니까? 혼란스럽고 문제의 원인이 될 수 있습니다. 객체를 속성에 설정하기 만하면 모든 것이 처리됩니다 :'appDelegate.trip = trip'과'appDelegate.car = car'. – Jeremy

+0

고마워요 제레미 나는 당신이 말한대로했고 더 나아 졌어.하지만 문제는 NSManagedObjectContext와 같다. 왜냐하면 나는 데이터를 저장하는 데 문제가 있고, [컨텍스트 재설정]을 추가하기 때문에 y를 저장할 수 있지만 저장 한 데이터를 잃어 버렸다. 대의원. 나는 [문맥의 재실행]을 시도하지만, 작동하지 않습니다. 또는 변경 사항을 저장하거나 델리게이트에 여행을 저장합니다. 나는 둘 다 할 수 없다. –

답변

3

항목을 만든 후 컨텍스트를 저장 하시겠습니까? 당신이 그것을 저장하지 않으면 나는 당신의 새로운 실재물이 적절하게 구원 받았다고 생각하지 않는다. 코드에서 당신은 단순히 컨텍스트에서 개체를 만드는,하지만 당신은 그것의 영구성에 대한 컨텍스트를 저장해야합니다

NSError *error = nil; 
if(![self.managedObjectContext save:&error]){ 
    //Handle error 
} 

난이 도움이되기를 바랍니다!

+0

저장하는 것이 중요하지만 저장 문제는 저장하지 않으므로 저장하지 않습니다. 재산에서. 이 코드에서는 * 단지 * 다른 객체입니다. 저장을 요구하는 가져 오기 또는 다른 것이 없습니다. –

+0

나는 당신이 말한 것을 시도해 보았습니다. 그러나 그것은 효과가 없었습니다. 사실 나는 저와 같은 관점에서 데이터에 접근하려고 노력합니다. 나는 그것을 구할 수 없습니다. –

+0

아마도 좀비를 켜서 여행이 어딘가에서 할당 해제되는지 확인할 수 있습니다. – tams

0

저장할 개체를 만드는 동안 실제로 개체를 영구 저장소에 저장하는 것처럼 보이지 않습니다. 당신이이 있어야 다른 뷰에 managedObject을 읽을 때 지금

if (![managedObjectContext save:&error]) { 
    NSLog(@"ERROR: %@", [error userInfo]); 
} else { 
    NSLog(@"EVERYTHING SHOULD HAVE SAVED PROPERLY"); 
} 

:

이 시도.

+0

저장하는 것이 중요하지만 속성에 엔티티를 저장하기 때문에 저장 문제처럼 들리지 않습니다. 이 코드에서는 * 단지 * 다른 객체입니다. 저장을 요구하는 가져 오기 또는 다른 것이 없습니다. –

+0

나는 당신이 말한 것을 시도해 보았지만 실제로는 효과가 없었습니다. 사실 나는 저와 같은 관점에서 데이터에 접근하려고 노력합니다. 나는 그것을 구할 수 없습니다. –

1

NSLog이 다른 객체를보고하는 경우 Garage 엔티티를 만들 위치를 확인해야합니다.

아마도 간단한 복사 및 붙여 넣기 오류가 있습니까?

0

맞춤 설정 도구의 메모리 관리 문제입니까? 그렇지 않으면 나는 여행 개체를 유지합니다 생각하지 않는다 그것은 오토 릴리즈 얻을 것이다 -

는이 속성을 사용하는

- (void)setTrip:(Trip *)Trip { 
    self.trip = Trip; 
} 

self.trip = 대신 단지 trip =해야합니까. 그런 다음 나중에 사용하게되면 다른 메모리 위치에 저장됩니다.

면책 조항 - 아직 100 % ARC가 아니므로 잘못된 것일 수 있습니다. 그것은 시도 가치가있어!

+0

감사합니다. 시도해 보았지만 충돌이 발생했습니다. /. –

+0

'충돌'은 매우 유용한 메시지가 아닙니다. 어떻게 충돌합니까? 어디에서 추락합니까? 스택 추적은 언제 실행됩니까? – deanWombourne

+0

내 대답은 유감 스럽지만 문제는 아닙니다. 그것은 내 문제는 NSManagedObjectContext, 나는'문제가 있기 때문에 데이터를 저장하는 데 문제가있는 것 같아요 [컨텍스트 재설정] y를 저장할 수 있지만 대리인에 저장된 데이터를 잃었습니다. 나는 [문맥의 재실행]을 시도하지만, 작동하지 않습니다. 또는 변경 사항을 저장하거나 델리게이트에 여행을 저장합니다. 나는 둘 다 할 수 없다. –

관련 문제