使用 XML 将大量数据传输到 iOS 设备时可能存在 3 个问题。首先你有数据本身的大小。其次,一旦收到数据,您就有处理时间。第三,你有连接的延迟(除非你控制两端,否则你几乎无能为力)。我将解决所有这三个问题,但要关注数据的大小,因为这似乎是您遇到的问题。
数据大小
如果大型数据集是您的问题,那么压缩就是您的朋友。我取得了巨大成功的一种方法是将数据压缩到内存中,然后对压缩后的数据进行 base64 编码,这样在传输中就不会出现奇数字符。我已经将它与通用二进制数据以及特定的刚性数据格式一起使用。这是相关的sn-p,你可以看到这个方法,因为它使用了for packaging the data here:
NSString* encodedStr = nil;
NSData *bufferData = [dict objectForKey:@"someKey"];
if (bufferData)
{
data = [LFCGzipUtility gzipData:bufferData];
len = [data length];
char* byteData2 = (char*)malloc(len);
memcpy(byteData2, [data bytes], len);
encodedStr = base64_encode(byteData2, len);
free(byteData2);
}
您可以反转该过程以取回数据。这几乎可以用于任何数据类型,而不仅仅是 XML,尽管您获得的压缩优势越多,这对您的帮助就越大。文本压缩得很好——它非常适合 XML。
此外,您还可以更改数据格式。在多次使用 XML 之后,我转向了 json,因为它通常更紧凑且更易于使用。 XML 擅长通用解决方案,但如果您不需要严格通用的东西,它可能是矫枉过正。我最喜欢的技术笑话:XML 就像暴力。如果它不能解决您的问题,那么您使用的不够多。 =)
另外Apple 和3rd parties 在iOS 上对json 有很好的支持。
最后,对于数据本身,请确保您不会一遍又一遍地发送不必要的数据。设备缓存是您的朋友。尽可能将数据分解为可重复使用的部分。我知道这并不总是可行的,但它绝对可以对大型数据集产生影响。
处理时间
确保您使用工具来分析您的呼叫,并且确保实际数据传输是您获取数据后不处理数据的问题。 NSXMLParser 乍一看可能有点难以理解,但它的工作效率非常高,而且速度非常快,而且还能很好地利用你的记忆力。
此外,一遍又一遍地发送不需要的数据,或者通过许多小操作而不是大量读取或写入将数据存储在磁盘上可能会导致性能问题。
延迟
通常你无法控制这个因素,但如果这是一个问题,那么你可以限制重复网络调用的数量,并在更少的网络调用中加载更多的数据。
最后,this link 写了一篇关于您可能感兴趣的更多技术方面的文章。