次のリンクで説明されていることを実現するために、2 つのアプリケーション (iphone とデスクトップ) を作成しようとしています。
コアデータは、デスクトップアプリを構築して、データモデルを作成することが可能です
Ok。そこで、name という文字列属性フィールドを持つ Client という名前のエンティティを 1 つ持つ、非常に単純なデスクトップ アプリを作成しました。対応する Model クラスも生成しました。
アプリを実行して、いくつかのクライアント名をリストに追加し、ファイルを (Testing.sqlite として) 保存しました。
今、同等のiPhoneアプリでファイルをロードしようとしています。最初にアプリケーション テンプレートの 1 つを使用してアプリを生成し、Core Data を含めました。注意: Client エンティティをミラーリングし、対応する Model クラスを生成しました。
「アプリケーションデリゲート」クラスに入り、「Testing.sqlite」ファイルを参照するようにpersistentStoreCoordinatorメソッドを修正しました。
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Testing.sqlite"]];
また、保存したデスクトップ アプリ ファイルを予想される場所にコピーしました。
~/Library/Application Support/IPhone Simulator/User/... etc.
したがって、理論的には、少なくとも 2 つのアプリはそれぞれ同じである必要があります。
ただし、からデータをロードしようとすると、常に空のように見えます。私のコードは次のようになります。
// fetch the delegate.
TestingAppDelegate *app = (TestingAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [app managedObjectContext];
// construct the request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// execute the request.
NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
if (results == nil) {
// Handle the error.
NSLog(@"No data loaded");
}
NSLog(@"Returned: %@", results);
// finally release
[results release];
[request release];
何が問題なのか理解できないようです。ヒントや提案は大歓迎です。
デバッグ中に、persistanceStoreCoordinator、managedObjectContext、結果の配列 (NSArray) のインスタンスを見ると、これらすべてのレコードが含まれていないように見えることがわかります。だから私は混乱しています。
注意: Testing.sqlite ファイルにはエントリが含まれています。
前もってありがとう、マット