API에서 정보를 빼내고 데이터베이스를 채우는 것과 같은 핵심 데이터 데이터베이스를 하나의 응용 프로그램에서 만들었습니다.사전로드 된 핵심 데이터 데이터베이스가 작동하지 않습니다.
이제 다른 앱에서 사용하고 싶습니다.
.xcdatamodeld 파일과 NSManagedObject 클래스를 복사했습니다.
코어 데이터 프레임 워크를 추가하고 가져 왔습니다.
.sqlite 파일을 기본 데이터베이스로 새 응용 프로그램의 리소스에 복사했습니다.
기본 데이터베이스를 Documents 디렉토리로 복사하고 열어서 쿼리를 수행 할 예정인 다음 코드를 사용하고 있습니다.
오류 메시지가 표시되지 않고 앱이 충돌하고 어디에서 잘못 되었습니까?
saveToURL을 사용하여 여기에 데이터베이스를 만들었다면 파일 이름이 persistentStore가 될 것입니다. 아래의 Trailer.sqlite는 관련성이 있습니까?
감사
- (void)viewDidLoad
{
[super viewDidLoad];
// Get URL -> "<Documents Directory>/<TrailerDB>"
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"TrailerDB"];
UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url];
// Copy out default db to documents directory if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:[url path]]) {
NSString *defaultDB = [[NSBundle mainBundle]
pathForResource:@"trailerdatabase" ofType:@"sqlite"];
if (defaultDB) {
[fileManager copyItemAtPath:defaultDB toPath:[url path] error:NULL];
}
}
if (doc.documentState == UIDocumentStateClosed) {
// exists on disk, but we need to open it
[doc openWithCompletionHandler:^(BOOL success)
{
if (success) [self useDatabase:doc];
if (!success) NSLog(@"couldn’t open document at %@", url);
}];
} else if (doc.documentState == UIDocumentStateNormal)
{
[self useDatabase:doc];
}
}
디버거 각 라인을 통해 단계 및 – jackslash
openWithCompletionHandler가 호출되는 충돌이 발생하지만, 심지어 충돌 ... – Alan