使用以下代码,我在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,&error); sqlite3_close(appDB); }}
我无法弄清楚如何在我的应用程序组中创建此数据库,因此我可以从我的今日扩展程序访问该数据库.
任何人都可以帮我解决这个问题吗?那太好了!
解决方法 您还必须在应用程序组目录中的包含应用程序中创建数据库文件.因此,包含应用程序和应用程序扩展将使用与数据库文件相同的文件路径.
Nsstring *appGroupID = @"group.YourAPP.extension";NSURL *appGroupDirectoryPath = [[NSfileManager defaultManager] containerURLForSecurityApplicationGroupIDentifIEr:appGroupID];NSURL *dataBaseURL = [directory URLByAppendingPathComponent:@"dbname.db"];
因此,通过这种方式,您将在包含应用程序和应用程序扩展中创建数据库文件,您将以相同的方式获取数据库文件.
总结以上是内存溢出为你收集整理的iOS 8 – 为App Group创建SQLite数据库全部内容,希望文章能够帮你解决iOS 8 – 为App Group创建SQLite数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)