2013-07-30 2 views
0

미안이, 내 문제가 무엇인지에 대한 이해에 대한 전망과 핵심 데이터 엔티티 변수를 사용하는 방법을 이해하는 데 문제가, 내 코드는 다음과 같습니다 :패스 핵심 데이터 개체 변수가

모양 A : A가 버튼을 저장할 때 어떤 점에 미안에서

이 일을하는 것은 누를 때

- (void)guardarOrcamento 
{ 
newBudget=[NSEntityDescription insertNewObjectForEntityForName:@"Budget" inManagedObjectContext:context]; 

newBudget.relationshipBetweenEntityBudgetAndClient = myEntityClientVariable; 

UIAlertView *saved = [[UIAlertView alloc]initWithTitle:@"Budget Saved" message:@""  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 

[saved show]; 

NSError *error; 
[context save:&error]) 
} 

보기 B :

내 문제가이보기에, 나는 또 다른 관계를 연결하고 그것을 위해, 내 "newBudget"변수 만이 RowEntity 존재할 수

- (void) setSelectedRowInTableview:(int)line 

{ 
rowEntity=[NSEntityDescription insertNewObjectForEntityForName:@"rowEntity" inManagedObjectContext:context]; 
rowEntity.relationshipBetweenEntityRowEntityAndBudget = newBudget; 

.... 

! : 비어 가장하지 필요 예산 엔티티가 이미 존재하는 경우 ... 그리고이 시점에서! ... 다른보기에서 새 객체를 삽입하고 저장했습니다 ... 그리고 왜 변수 "newBudget"(뷰 B에서)이 비어 있는지 이해합니다 , 어떻게 그것을 지속 할 수 있습니까?

감사는 시간

답변

1

을 위해 기본적으로 당신이 "B"를 볼 수있는 전체 예산 엔티티 또는 뷰 "A"에서 관련 예산 엔티티의 ID를 통과해야합니다. 앱의 뷰 계층 구조와 로직을 알지 못하면 예산을 선택하고 해당 예산과 관련된 엔티티를 추가한다고 가정합니다.

변수 전달 방법과는 별도로 선택한/삽입 된 예산 개체를 NSManagedObject 변수에 저장할지 아니면 예산 개체의 ID를 NSManagedObjectID에 저장할지 여부를 결정한 다음 -(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error을 사용하여 개체를 검색 할 수 있습니다. 전역 변수를 AppDelegate에 NSManagedObject/NSManagedObjectID에서

설정을 사용하여

1)이 accesable합니다

NSManagedObject *selectedBudgetReference; // OR 
NSManagedObjectID *selectedBudgetReferenceID; 
... 
@property (strong, nonatomic) NSManagedObject *selectedBudgetReference; 
@property (strong, nonatomic) NSManagedObjectID *selectedBudgetReferenceID; 

다음 뷰 (A)에서의 삽입/선택한 참조로 저장 :

AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate]; 
app.selectedBudgetReference = newBudget; 
app.selectedBudgetReferenceID = [newBudget objectID]; 

마지막으로보기 B에서 액세스 :

도 A로부터 사용자 스위치는 상기와 마찬가지로

를 B로하지만 설치 형태 B (formBViewController) 때 형태 A의과 생성 양식 B의 목적 변수로 전환 할 때, 가변 통과 6,

AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate]; 
NSManagedObject *localBudgetToRelate = app.selectedBudgetReference; 
NSManagedObject *localBudgetToRelate2 = [context existingObjectWithID:app.selectedBudgetReferenceID]; 

2) 그보기는 기본적으로 양식 B의 새로 작성된보기 제어기에 액세스하여 formBViewController의 오브젝트 변수에 예산 정보를 전달합니다.

+0

위! 좋은 답변 ... 고맙습니다. 코드 타드 ... 설명을 해보겠습니다. 그러면 다시 연락 드리겠습니다. 정말 좋은 설명 감사합니다. – Japa

+0

안녕하세요 Codedad, 전역 변수 옵션을 사용하여보기에서 b, "EntityBudget * newBudget"변수를 사용하고있어 내가 할 수 있다고 생각 : self.newBudget = app.selectedBudgetReference; 하지만 그것은 내게 경고를주는 ... 또한 내가 "selectedBudgetReference;"선언하면 제안하는 "selectedBudgetReferenceID;"를 선언하지 않아도됩니까?죄송합니다. 저는이 부분에 대해 약간 새로운 것입니다. 전역 변수를 사용하지 않았고 또한 App Delegate에서 newBudget을 선언하고 A 뷰에서 A를 설정하려고했지만 B 뷰가 비어있었습니다. 좀 더 도와 줄 수있어? 감사 – Japa

관련 문제