gpt4 book ai didi

objective-c - NSDocumentDirectory或NSBundle资源路径与Sqlite吗?

转载 作者:行者123 更新时间:2023-12-03 09:44:04 25 4
gpt4 key购买 nike

我想知道为什么我们首先在这里用NSDocumentDirectory搜索路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);  
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"Sports.sqlite"];


然后我们使用NSBundle的时间resourcePath将此路径与另一个路径进行比较:

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] 
stringByAppendingPathComponent:@"Sports.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath
toPath:writableDBPath error:&error];


两者有什么区别?

最佳答案

在这种情况下,您(通常只有一次,除非需要还原数据库,否则)将数据库从只读包中复制到文档目录中,以便用户可以对其进行读写。如果您想预先建立数据库或仅设置结构,这将很有用。

您的文档目录是可读写的,因此bundle不是必需的,因此您需要在sqlite目录中具有documents才能正确使用它。


代码的第一部分只是为您提供希望sqlite文件在documents目录中的路径。最终被保存在writableDBPath中。
接下来,您从bundledefaultDBPath)获取路径,并使用两条路径来

... copyItemAtPath:defaultDBPath toPath:writableDBPath ...



这为您提供了捆绑软件中提供的读/写数据库。为什么要这样做而不是在设备上运行 SQL来创建架构?这使您可以将一些数据预先植入数据库。有时使用图形工具设置和编辑sqlite文件可能会更容易

关于objective-c - NSDocumentDirectory或NSBundle资源路径与Sqlite吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com