0

我正在为 iOS 8 编写键盘扩展。当第一次启动键盘时(不存在文件的先前副本),将一个 sqlite 数据库从捆绑包复制到 Document 文件夹:

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dbPath = [docPath stringByAppendingPathComponent:@"work.sqlite3"];
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"default" 
                                                       ofType: @"sqlite3"];
[[NSFileManager defaultManager] copyItemAtPath:bundlePath 
                                        toPath:dbPath error:nil];

万一用户将来将这台 iPhone 的备份恢复到新 iPhone 上,work.sqlite3文件是否会在新 iPhone 中恢复?

4

2 回答 2

0

您不能将文件写入应用程序的捆绑文件夹

于 2014-11-27T08:39:56.957 回答
0

代替

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

利用

func getTheFilePath() -> String
    {
        var url = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.groupBundleID") as NSURL?
        var path = url?.absoluteString?.stringByAppendingPathComponent("work.sqlite3") as String?
        path = path!.stringByReplacingOccurrencesOfString("file:", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

        return path!
    }
于 2014-12-19T05:35:31.920 回答