Bra*_*ram 7 sqlite ios8 ios-app-extension ios-app-group
我正忙着为我的应用创建iOS 8 Today扩展程序.我想从我的扩展程序访问我的SQLite(而非Core Data)数据库.在网上搜索一下后,我发现我需要一个App Group.所以我为我的应用程序创建了一个名为"group.AppName"的应用程序组.
使用以下代码,我在NSDocumentDirectory中创建一个SQLite数据库.但App Extensions无法访问NSDocumentDirectory.这就是我想在我的应用程序组中保存SQLite数据库的原因.
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
dbPathString = [docPath stringByAppendingPathComponent: @"dbName.db"];
char *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:dbPathString])
{
const char *dbPath = [dbPathString UTF8String];
if(sqlite3_open(dbPath, &treinAppDB) == SQLITE_OK)
{
const char *sql_stat = "CREATE TABLE IF NOT EXISTS table (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, code TEXT, lat TEXT, lon TEXT)";
sqlite3_exec(appDB, sql_stat, NULL, NULL, &error);
sqlite3_close(appDB);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何在我的应用程序组中创建此数据库,因此我可以从我的今日扩展程序访问该数据库.
任何人都可以帮我解决这个问题吗?那太好了!
Ale*_*nka 16
您还必须在应用程序组目录的包含应用程序中创建数据库文件.因此,包含应用程序和应用程序扩展将使用与数据库文件相同的文件路径.
NSString *appGroupId = @"group.YourAPP.extension";
NSURL *appGroupDirectoryPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupId];
NSURL *dataBaseURL = [directory URLByAppendingPathComponent:@"dbName.db"];
Run Code Online (Sandbox Code Playgroud)
因此,通过这种方式,您将在包含应用程序和应用程序扩展中创建数据库文件,您将以相同的方式获取数据库文件.
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |