我正试着把一本大字典分成60 KB的小块。我该怎么做?
我尝试这样做的原因是,当在iOS和watchOS之间传输时,要超过65.5kb的userinfo传输限制。我可以写一个文件到磁盘来解决这个问题,但在这种情况下,它有点复杂,因为我发送了很多数据。
我的字典是这样的:
data["sessionLog"]
sessionLog包含我的所有值。
样本数据:
"lat": 000000000000,"long": 00000000000,"name": "adfdsfs","location": "asdfasdfadsf","speed": 65

最佳答案

假设有一项数据(假设您有一个巨大的数组)如下所示:

"lat": 000000000000,
"long": 00000000000,
"name": "adfdsfs",
"location": "asdfasdfadsf",
"speed": 65

如果将latlong存储在Double变量中,将namelocation存储在String变量中,并将speed存储在Int变量中,则可以对每个项执行如下操作:
let lenName = name.lengthOfBytes(using:String.Encoding.utf8)
let lenLoc = location.lengthOfBytes(using:String.Encoding.utf8)
let total = lenName + lenLoc + MemoryLayout<Int>.size + (MemoryLayout<Double>.size * 2)

当然,你必须循环浏览这些项目,直到达到接近你所寻找的极限。但请注意,如果字符串值使用UTF8编码,则必须这样做。因此,如果使用不同的编码,这些值将发生变化。
但希望这能给你一些你可以合作的东西:)

10-05 20:12