SenTestCaseでCoreDataを使用しようとしています。問題は見つからないNSManagedObjectModelです。私はアプリケーションバンドル内のママファイルを検索してURLで初期化しようとしましたが、見つけられませんでした。そのため、私は次のように切り替えました。NSManagedObjectModelがmergedModelFromBundlesで初期化されました:nilがSenTestCaseでモデルを見つけられません
これは正しく動作しますが、メインアプリケーションでのみ機能します。私はSenTestCaseでそれを実行しようと戻っobjectModelは、任意のエンティティを持っていない:
(gdb) po objectModel
(<NSManagedObjectModel: 0xab72480>) isEditable 0, entities {
}, fetch request templates {
}
私はお母さんファイルを生成するために必要なセットアップの種類を知っていないことを認めざるを得ません。 .xcdatamodeldファイルを、アプリケーションのターゲットとテストターゲットのコンパイル済みソースのリストに追加しました。
次のコードは、アプリケーションのViewController viewDidLoadメソッドでは正常に動作しているが、SenTestCaseクラスのテストケースで働いていません。
- (void)testCoreData {
NSManagedObjectModel *objectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: objectModel];
[context setPersistentStoreCoordinator: coordinator];
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"TestDatabase"];
NSLog(@"Path: %@", url);
NSError *error;
NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:url
options:nil
error:&error];
if (newStore == nil) {
NSLog(@"Store Configuration Failure\n%@",
([error localizedDescription] != nil) ?
[error localizedDescription] : @"Unknown Error");
}
TaskSet *taskSet = [NSEntityDescription insertNewObjectForEntityForName:@"TaskSet"
inManagedObjectContext:context];
taskSet.taskSetId = @"1234";
NSLog(@"TaskSet: %@", taskSet);
NSError *saveError;
if ([context save:&saveError]) {
NSLog(@"Store Saved successfully");
} else {
NSLog(@"Store not saved! Error: %@", saveError);
}
}
エラー:
Catchpoint 3 (exception thrown).Unknown.m:0: error: -[ControllerTest testCoreData] : +entityForName: could not locate an entity named 'TaskSet' in this model.
差とは何ですかSenTestCaseで実行し、viewDidLoadで実行していますか?コアデータモデルをテストケースにコンパイルするには、何が必要ですか?