Mac подмечает, вы используете sqlite или основные данные?
Если вы используете sqlite, то при запуске приложения проще всего скопировать его в директоры документов приложений (есликонечно, он уже существует, и в этом случае ничего не делать)
Я обычно создаю sqliteDB, внешний по отношению к xcode, и добавляю его в виде файла (как изображение).Затем в методе applicationDidFinishLaunchingWithOptions (в вашем делегате приложения я вызываю тот же метод, но мой код немного отличается. Взгляните:
- (void)createEditableCopyOfDatabaseIfNeeded
{
//We always need to overwrite the DB, but first we need to extract usedQuestionIds, ObjectiveData and stats
//Once database is replaced, reinsert data
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"yourdatabasename.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success)
{
//might want to check for update and if so, back up users unique data, replace database and reinsert
}
else
{
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"yourdatabasename.sqlite"];
[fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
}
Затем в моем делегате приложения создается другой метод, который позволяетмне, чтобы получить соединение БД, которое я могу затем использовать:
+(sqlite3 *)getNewDBConnection
{
sqlite3 *newDBconnection;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"yoursqliteDatabaseName.sqlite"];
// Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK)
{
NSLog(@"Database opened successfully");
}
else
{
NSLog(@"Error in opening database ");
}
return newDBconnection;
}
Теперь, где бы вы ни находились в вашем приложении, вы можете подключиться к БД, позвонив по телефону:
sqlite3 *db = [YourAppDelegateName getNewDBConnection];
//do stuff with your sqlite db connection
sqlite3_close(db);
Надеюсь, это поможет:)