2

我没有找到让我满意的答案,我可以将数据插入数据库,我也可以在模拟器上从中选择,但是当我关闭模拟器并再次打开它时,我看不到任何数据。我也在终端上打开它,我没有看到任何数据。我错过了任何一行还是有任何逻辑错误?

你尝试了什么?对我有什么建议吗?

我将数据插入到我的代码中是这样的:

databasePath = [[NSBundle mainBundle] pathForResource:@"persons" ofType:@"sqlite3"];
        const char *dbpath = [databasePath UTF8String];
        sqlite3_stmt    *statement;

        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
            NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO person (id, name, address, photograph, telephone, fax, district) VALUES (\"%i\",\"%@\", \"%@\", \"%@\",\"%@\",\"%@\",\"%@\")", i, Name,Addresses, Image, Telephone,Fax,District];

            const char *query_stmt = [insertSQL UTF8String];

            sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);

            if (sqlite3_step(statement) == SQLITE_DONE)
            {
                //  NSLog(@"OK");

            } else {
                //  NSLog(@"Problem!!!");

            }
            sqlite3_finalize(statement);
            sqlite3_close(contactDB); 
        }
4

2 回答 2

1

您不能对主包中的数据库进行更改,因为它是只读的。

您必须首先将其复制到可以写入的位置,例如用户文档或缓存目录。

iOS 数据存储指南根据数据类型指定应将其保存在何处。

于 2012-06-23T15:57:43.933 回答
1

我正在寻找相同的答案,因为我也被卡住了,我认为其他人的帖子在这里给出了一个很好的例子。

以下是 Inafziger 提供的链接上的信息:

iOS 数据存储指南 iCloud 包括备份,它每天通过 Wi-Fi 自动备份用户的 iOS 设备。备份应用程序主目录中的所有内容,但应用程序包本身、缓存目录和临时目录除外。购买的音乐、应用程序、书籍、相机胶卷、设备设置、主屏幕和应用程序组织、消息和铃声也会得到备份。由于备份是通过无线方式完成并为每个用户存储在 iCloud 中,因此最好尽量减少为您的应用存储的数据量。大文件会延长执行备份所需的时间,并消耗更多用户可用的 iCloud 存储空间。

为确保备份尽可能高效,请务必按照以下准则存储应用程序的数据:

  1. 只有用户生成的或应用程序无法重新创建的文档和其他数据,才应存储在 /Documents 目录中,并由 iCloud 自动备份。
  2. 可以再次下载或重新生成的数据应存储在 /Library/Caches 目录中。您应该放在 Caches 目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志、报纸和地图应用程序使用的内容。
  3. 仅临时使用的数据应存储在 /tmp 目录中。虽然这些文件没有备份到 iCloud,但请记住在完成后删除这些文件,以免它们继续占用用户设备上的空间。
  4. 使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下也是如此。将此属性用于可以重新创建但即使在存储空间不足的情况下也需要保留的数据,以便您的应用程序正常运行,或者因为客户希望它在离线使用期间可用。此属性适用于标记的文件,无论它们位于哪个目录,包括 Documents 目录。这些文件不会被清除,也不会包含在用户的 iCloud 或 iTunes 备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监控和清除这些文件。
于 2013-08-15T06:26:49.550 回答