【问题标题】:How to save Sql Image retrieved through web service on IOS Sqllite database如何将通过 Web 服务检索到的 Sql Image 保存在 IOS Sqlite 数据库中
【发布时间】:2013-07-02 21:32:08
【问题描述】:

我在服务器上有一个 sql 表。我想将整个表格内容获取到 IOS sqllite 数据库。除 SQL Server Image 数据类型外,一切正常。我调用了 WCF Web 服务,以便将表数据获取到 IOS,并将 SQLLite 数据库中的数据保存到与我的 sql server 表具有相同列的实体中。

我在 Sql Server 中使用图像类型,但在 IOS 上,我在创建实体时使用二进制数据类型作为图像。我使用以下代码将数据保存到 sqllite。我确保我正确收到了数据。未设置接收到的 Sql Image 数据以某种方式调用 tbl setValue:forKey。当我检查它是零。有人知道我做错了什么吗?

(NSManagedObject *) tblRow \\ this is my dictionary and when i call save, its contents are written to sqllite.

[tblRow setValue:(NSData *)[rowData GetValue:(NSString *)[ keys objectAtIndex:i]] forKey:[(NSString *) [keys objectAtIndex:i] lowerCaseString]];

[[Globals GetContext] save:&error]; // This save the data to sqllite

【问题讨论】:

    标签: ios sql sqlite


    【解决方案1】:

    理论上你没有做错任何事情,所以在传递之前尝试获取键和值然后传递setValue:forKey:,并检查它们是否已经存在。

    NSString *key = [keys objectAtIndex:i];
    NSData *data = [rowData GetValue:key];
    

    但是,我建议直接设置属性而不是在这种情况下使用setValue:forKey:,此外,最好将图像保存在磁盘上,并将相应的路径保存在 CoreData 上(假设您基于示例代码中的类和方法)。

    【讨论】:

    • 我看不出这与我已有的有什么不同。设置值不会设置值。当我检查时,调用设置值后它为零。
    • 这只是为了帮助您调试和查找错误所在,例如无效的密钥或其他任何内容。 tblRow 是什么班级?您将其转换为NSManagedObject,但说它是一本字典。调试器上是否打印了任何错误?我认为您有tblRow == nildata == nil 或无效的key。再次检查所有这些。关于使用属性,这是一个最佳实践。
    • 我确保填充了数据和键,但是当我在我的实体对象上调用 setValue:ForKey: 时,我得到的图像数据为零。我的专栏名称是数据,您认为可能是这个原因吗?
    • tblRow.data = data; 不起作用?您是否成功地将任何其他值设置为tblRow?您是在调试器上使用NSLog 还是通过po 检查此分配?您可以发布您的网络服务的响应吗?抱歉问了太多问题,只是想弄清楚发生了什么。
    【解决方案2】:

    我不是编写向我发送图像数据的 WCF 服务的人,我了解到该服务将 base 64 编码应用于数据并将 base 64 字符串设置为 NSData 对象并尝试保存它失败了。解码数据后,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      相关资源
      最近更新 更多