我正在尝试创建一种将我的应用程序界面保存在 JSON 文件中的方法。虽然我可以通过它们的框架和/或中心点定义静态元素,但界面确实包括从照片库中选择的单个图像。因为一些 iPhone 有 8MP 相机,我可以预期一些图像会是非常大。
我希望能够保存此界面并通过电子邮件发送它,以便其他应用用户可以重新打开该文件并看到包含图像的相同界面。
目前我正在使用 JSONKit 将我的数据保存到一个 JSON 对象中。这意味着电子邮件将包含一个包含布局参数和图像的 JSON 文件。我从来没有使用过这么大的 JSON 文件,所以问题是 - JSON 中有几兆的图像数据会出现解析问题吗? 或者我应该选择其他一些文件容器:第一部分JSON 文件,第二部分原始图像数据,然后将该文件分成一个 JSON 字符串和一个原始数据字符串?
这就是我目前用来获取 JSON 文件的方法。将NSData加入JSON后,convert to json方法返回nil
NSString* currentURL = webView.request.mainDocumentURL.absoluteString;
[dictionary setValue:currentURL forKey:@"webViewAddress"];
//this call correctly returns the json string
NSLog(@"%@", [dictionary JSONString]);
NSLog(@"+++++++++++++++++++++++++++++++++++++");
NSData* imageData = UIImagePNGRepresentation(arOverlayView.image);
//after this call, the json returns nil
[dictionary setValue:imageData forKey:kimageData];
NSLog(@"%@", [dictionary JSONString]);
最佳答案
如果您使用电子邮件作为传输机制,您的二进制数据将不得不在其生命周期的某个时刻以类似于 Base64 编码的形式结束。电子邮件没有“原始”格式,只有文本。
充其量你可以实现Base85比Base64更高效的编码
因此,除非您发明自己的传输机制 - 例如基于点对点 TCP/IP 的链接,否则您将不得不吸收大文件。
关于iPhone 如何将大图像与 JSON 文件一起发送?我应该将它嵌入到 JSON 中还是单独发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760707/