1

私はiOSが初めてです。プロジェクトでマッピングを再利用できるように、BO を Core Data にマッピングする方法について誰か教えてください。これが私のコードです

- (void) saveData
{       
    CoredataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSManagedObject *newContact;

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];

    [newContact setValue:firstName.text forKey:@"firstName"];
    [newContact setValue:lastName.text forKey:@"lastName"];
    [newContact setValue:driverLicenceno.text forKey:@"driverLicenceNumber"];
    [newContact setValue:state.text forKey:@"state"];
    [newContact setValue:phoneNO.text forKey:@"phoneNumber"];
    [newContact setValue:injuryStatus.text forKey:@"injuryStatus"];
    [newContact setValue:emailAddress.text forKey:@"emailAddress"];

    NSLog(@"fName%@",firstName.text);
    firstName.text = @"";
    NSLog(@"fName%@",firstName.text);
    lastName.text = @"";
    driverLicenceno.text = @"";
    state.text = @"";
    phoneNO.text = @"";
    injuryStatus.text = @"";
    emailAddress.text = @"";

    NSError *error;
    [context save:&error];
    status.text = @"Person saved";
}

これ以外に BO をコアデータにマップする方法はありますか?

4

2 に答える 2

2

Tahir まず、既に作成している Coredata db を作成する必要があります。次にコアデータ モデルのエンティティ パネルでテーブルを選択します。プロジェクト階層ツリーでモデルを右クリックします。新しいファイルを選択し、coredata と NSManagedObjectSubclass を選択して保存します。メソッドで使用できるcoredataテーブルのモデルクラスを作成します。ここに画像の説明を入力

この画像は、右クリックして NSManagedObjectSubClass を選択するためのデータベースとテーブルの選択を示しています

ここに画像の説明を入力

この画像は、NSManagedObjectSubClass よりも最初のコアデータの選択を示しています。この後、[次へ] をクリックすると、名前を付けてプロジェクトに保存するためのパネルが表示されます。これがあなたの助けになることを願っています ありがとう!

于 2013-03-20T07:15:42.090 に答える
1

update、delete、find second max、joins、view などの SQL クエリをコア データに適用する方法を教えてください。

Core Data は多くのことをカバーしているので、いくつかのヒントを与えることができます。

まず第一に、コア データを扱うということは、 と呼ばれる一種のスクラッチパッドに「存在する」管理対象オブジェクトを扱うことを意味しますNSManagedObject。これは、作成したデータ モデルに基づいてファイル (SQL ファイルなど) から取得されたオブジェクトを含む一種のコンテナー グラフと考えてください。コンテキストを保存しない限り、変更はメモリに存在し、物理的に保存されません。

[moc save:&error];

を使用してNSManagedObject、オブジェクトを作成、更新、クエリ、または削除できます。もちろん、他のこともします。

新しいマネージド オブジェクト (データ モデルで宣言されている) を挿入する必要がある場合は、 を使用できますinsertNewObjectForEntityForName:inManagedObjectContext:

クエリを実行する必要がある場合は、NSFetchRequestクラスに目を向ける必要があります。の設定NSFetchRequestは、SQL 言語の SELECT ステートメントに相当します。

簡単な例を次に示します。

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

配列resultsには、sqlite ファイル内に含まれるすべての管理対象オブジェクト (人々) が含まれます。特定のオブジェクト (または複数のオブジェクト) を取得する場合は、その要求で述語を使用する必要があります。例えば:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName == %@", @"John"];
[request setPredicate:predicate]; 

この場合results、属性が と等しいオブジェクト (人) が含まれますJohn。述語を設定することは、SQL ステートメントに WHERE 句を入れることと同じです。

NSPredicates結合、ビューなどを設定する場合は、エンティティ間で (関係と属性に基づいて)正しく実行する必要があり、Core Data に行を実行させる必要があります。

オブジェクトを削除する必要がある場合は、次のことを行う必要があります。

[moc deleteObject:managedObjectToDelete];

管理対象オブジェクトを更新する必要がある場合は、フェッチ リクエストを作成し、探しているオブジェクトを取得する必要があります (たとえば、各オブジェクトに特定の ID を提供し、必要な ID で述語を設定できます)。フェッチ リクエストがいくつかのオブジェクトを取得する場合は、それらを更新できます。

これらは、Core Data を使用する際のガイドとなる簡単なヒントです。Core Data Programming Guideを読むことをお勧めします。そこにはたくさんのものがあります。必要に応じて、Core Data の使用に関する優れたチュートリアルから始めることができます。www.raywenderlich.comを参照してください。

他に欲しいものがあれば教えてください。

それが役に立てば幸い。

于 2012-05-21T07:55:45.400 に答える