首页 > 代码库 > 【问题收集·初级问题】模拟器和真机,分别如何指定数据库路径,模拟器和真机对应的沙盒有何不同…

【问题收集·初级问题】模拟器和真机,分别如何指定数据库路径,模拟器和真机对应的沙盒有何不同…

 

模拟器和真机,分别如何指定数据库路径,模拟器和真机对应的沙盒有何不同

网友的问题如下所示: 23:58:19

但是原理搞不太懂。。。

网友的问题如下所示: 23:59:28

我在项目中用了一个数据库框架对数据库的操作是这个框架封装好的

网友的问题如下所示: 23:59:36

我看了下头文件

网友的问题如下所示: 00:00:18

就是数据库在初始化的时候指定了一个路径是模拟器运行时的沙盒路径

我的回答如下所示: 00:01:02

嗯,在真机上数据库的路径能建立起来吗

网友的问题如下所示: 00:01:09

那么项目用模拟器运行后生成的数据库文件也就是xxx.db

我的回答如下所示: 00:01:38

#define CYLAccountPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"account.data"]

我的回答如下所示: 00:01:43

是不是像这样

网友的问题如下所示: 00:01:42

这个文件会存放在Documents文件夹下

我的回答如下所示: 00:01:49

嗯是的。

网友的问题如下所示: 00:01:51

嗯对

网友的问题如下所示: 00:02:09

那么在真机上运行这个路径是不是要重新指定

我的回答如下所示: 00:02:22

这个是不用的。

网友的问题如下所示: 00:02:58

何以见得?

我的回答如下所示: 00:04:19

路径有两种,一种是绝对路径,比如/Users/chenyilong/Desktop/asdfsd.db,另一种就是我们刚刚用的这种。如果是前者,咱们在Mac的模拟器上跑完后,想在真机上跑是需要重新写路径的。

我的回答如下所示: 00:05:53

#define CYLAccountPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"account.data"]这种方法是获取iOS设备的沙盒路径,是专门为iOS设备而设计的,而模拟器因为模拟了真机的环境,所以这种方法刚好也就能运行成功。

网友的问题如下所示: 00:07:07

哦原来如此我说呢路径没改目前还没出问题

我的回答如下所示: 00:07:51

这种方法就是为iOS设备iPhone-iPad而设计的。所以任何时候都不必要在真机上改。模拟器能运行,只能说明apple的模拟器很强大,模拟iOS设备模拟得一模一样,让编译器都认为这是在iOS设备上跑

网友的问题如下所示: 00:08:37

问题是项目有个需求就是要保证数据库其中一个表中要有两条数据

我的回答如下所示: 00:09:16

是一个db中两个表?还是什么?

网友的问题如下所示: 00:10:35

刚开始我的做法是先让项目在模拟器上运行生成一个.db的数据库文件,然后把这个文件放在项目中,然后重新指定dbpath NSBundle mainbundle、、、

网友的问题如下所示: 00:11:07

让程序查找这个文件来加载数据库表中的数据

我的回答如下所示: 00:11:44

嗯,那你现在应该知道没必要了吧。

网友的问题如下所示: 00:12:52

后来我有写了文件拷贝操作实际证明不管用。。。

网友的问题如下所示: 00:13:53

最后还是指定了模拟器沙盒路径暂时没出问题。。。

我的回答如下所示: 00:14:16

放心,不会有问题的。

我的回答如下所示: 00:14:33

 

我的回答如下所示: 00:14:57

模拟器沙盒路径以后就改成真机沙盒路径

网友的问题如下所示: 00:15:06

项目打包成 apk 拿到其他设备安装应该也不会有问题了?

我的回答如下所示: 00:15:27

打包成ipa也不会有问题的

网友的问题如下所示: 00:16:25

也就是说 模拟器的Documents路径 和真机下的Documents 是一个路径

网友的问题如下所示: 00:16:33

能这么理解么?

我的回答如下所示: 00:16:43

网友的问题如下所示: 00:18:05

嗯那就好了今天有收获了!

我的回答如下所示: 00:18:15

咱们的方法,指向的实际上是iOS设备的沙盒路径。是不支持Mac电脑系统的,但是因为模拟器模拟得环境太逼真了,xcode以为是在真机上跑,所以也成功地指向了电脑的一个文件夹。

我的回答如下所示: 00:20:10

好的,以后随时交流哈。