0

ビュー間でコア データ エンティティ変数を使用する方法を理解するのに苦労しています。私の問題をよりよく理解するために、私のコードは以下のとおりです。

ビュー 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」変数はほとんど空ではありません!:

- (void) setSelectedRowInTableview:(int)line

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

....

この RowEntity は、Budget エンティティが既に存在する場合にのみ存在できます...そして、この時点で存在します!...他のビューで、新しいオブジェクトを挿入して保存しました...そして、変数 "newBudget"(inビュー B) は空ですが、どうすれば永続化できますか?

ありがとうございました

4

1 に答える 1

1

基本的に、完全な予算エンティティまたは関連する予算エンティティの ID をビュー "A" からビュー "B" に渡す必要があります。アプリのビュー階層とロジックがわからないので、予算を選択してから、その予算に関連するエンティティを追加すると仮定します。

変数を渡すソリューションとは別に、選択/挿入された予算オブジェクトを NSManagedObject 変数に格納するか、予算オブジェクトの ID を NSManagedObjectID に格納してから を使用してオブジェクトを取得するかを選択できます-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error

1) グローバル変数の使用

AppDelegate で NSManagedObject/NSManagedObjectID をセットアップし、アクセス可能にします。

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 でアクセスします。

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

2) ユーザーがビュー A から B に切り替えるときに変数を渡す

上記と同様ですが、フォーム B (formBViewController) でオブジェクト変数を設定し、フォーム A でフォーム B を作成してそのビューに切り替えると、基本的にフォーム B の新しく作成されたビュー コントローラーにアクセスし、予算情報を formBViewController のオブジェクト変数に渡します。

于 2013-07-30T23:42:32.617 に答える