2012-10-01 4 views
0

기존 데이터베이스 파일이 있습니다. 이 db 파일을 프로젝트에서 사용하고 싶습니다. 이 파일을 Mac의 응용 프로그램 폴더에 저장하고 Xcode로 드래그했습니다. 이제 파일이 존재하는지 여부를 확인하는 코드를 작성했습니다. 그러나 그것은 거짓 예외를 던지고있다.xcode에서 데이터베이스 파일에 액세스

bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"]; 

기존 DB 파일을 사용하는 방법을 알려주세요.

감사

답변

2

봅니다 :

let dbPath = Bundle.main.path(forResource: "school", ofType: "db") 
+0

고마워요. 그것은 나를 위해 일했습니다. – Coder

0

난 당신이, 당신이 당신의 프로젝트에 코어 데이터를 사용하지 않는 가정? 그렇다면 Apple의 샘플 프로젝트 iPhone Core Data Recipes을 살펴보십시오! Classes/RecipesAppDelegate.m에서 필요한 것을 성취 할 수있는 샘플 코드를 찾을 수 있습니다!

Ray Wenderlich's site에 미리로드하는 방법에 대한 좋은 가이드가 있습니다. Core Data Recipes의 사례가 Apple에서 가장 바람직하지 않은 방식으로 미리로드 된 데이터베이스를 배송하십시오. 더 정교한 접근법을 위해 제공된 자습서를 살펴보십시오!

+2

기존 DB 인 경우 Core Data를 사용하지 않을 것입니다. – sosborn

0

DB (MySQL, SQLITE 등)의 유형을 알지 못하면 데이터베이스에 액세스 할 수있는 iOS 적절한 라이브러리/래퍼를 찾는 것이 가장 좋습니다. 예로서. FMBD SQLite에 매우 적합하다면. 스위프트를 들어

NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"]; 

와 경로를 받고

0

그것은 당신이 쓸 수 데이터베이스를 필요 여부에 따라 달라집니다.

그냥 이렇게하여 데이터베이스에 액세스 할 수 있습니다 :

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb.sqlite"]; 

을하지만 다른 디렉토리에 복사 한 경우는 (예를 들어, 문서 디렉토리)에 쓸 수 있도록, 당신이 필요 했어 경로를 얻으려면 다음과 같이하십시오.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"]; 
관련 문제