我在服务器上有一个sql表。我想将整个表内容提供给IOS sqllite数据库。除SQL Server Image数据类型外,一切正常。我调用WCF Web服务以获取表数据到IOS并将SQLLite数据库中的数据保存到与我的sql server表具有相同列的实体。
我在Sql Server中使用Image类型,但是在IOS中,我在创建实体时使用了二进制数据类型作为图像。我使用以下代码将数据保存到sqllite。我确保正确收到数据。以某种方式调用tbl setValue:forKey与收到的Sql图像数据没有设置。当我检查它是零。有谁知道我做错了什么?
(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
答案 0 :(得分:0)
从理论上讲,你没有做错任何事情,所以在你通过setValue:forKey:
之前尝试获取密钥和值,并检查它们是否已经存在。
NSString *key = [keys objectAtIndex:i];
NSData *data = [rowData GetValue:key];
但是,我建议直接设置属性而不是在这种情况下使用setValue:forKey:
,而且,最好将图像保存在磁盘上,并在CoreData上保留相应的路径(假设您正在使用它)关于示例代码的类和方法)。
答案 1 :(得分:0)
我不是那个写WCF服务的人,它向我发送图像数据,我了解到该服务将base 64编码应用于数据并将base 64字符串设置为NSData对象并尝试保存它失败。一旦我解码了数据,一切都运行良好。