我有一个SQlite数据库文件,其中包含我的应用程序附带的记录。 我刚刚使用我添加到项目中的文件来创建INSERT和UPDATE语句。 将其上传到我的测试设备后,我得到了一个例外,即该文件是只读的。 经过一些研究后我发现,我必须将db文件复制到users目录才能进行插入。这适用于现在。但我有一个关于它的问题,我没有通过谷歌得到答案:
我应该把我的复制过程放在哪里? 我在AppDelegates FinishedLaunching中实现了它,在那里我检查它是否已经存在。
我应该将文件复制到哪里? 我现在使用MyDocuments文件夹,这可以吗?
由于文件无法加密,其他应用程序是否可以访问数据库文件?
当用户决定从设备中删除该应用时。数据库文件也会被删除吗?
谢谢!
答案 0 :(得分:3)
我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching中实现了它,在那里我检查它是否已经存在。
这实际上取决于,但是从我的角度来看,完成启动是可以的。
我应该将文件复制到哪里?我现在使用MyDocuments文件夹,这可以吗?
我不确定“MyDocuments”文件夹的含义。每个Application都有一个专用的Document目录。那是你应该复制的地方。
由于文件无法加密,其他应用程序是否可以访问数据库文件?
不,他们运行沙盒(除非设备已越狱)
当用户决定从设备中删除该应用时。数据库文件也会被删除吗?
是的,因为整个文档目录将被删除。
答案 1 :(得分:1)
我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching
中实现了它
请记住,在iOS监视程序杀死您的应用程序之前,您有足够的时间完成FinishedLaunching
执行(大约15秒)。
根据数据库的大小,设备的速度和您需要执行的其他处理,您可能只想检查它是否已经存在(应该是快速的)然后执行复制(如果需要)到另一个线程。
我现在使用MyDocuments文件夹,这可以吗?
是的,使用Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments)
是正确的。
@Lightforce的其他所有内容都包含其余内容。