我试图将一个大字典分成更小的60kb块。我该怎么做?
我尝试这样做的原因是,在iOS和watchOS之间进行传输时,超过了65.5kb的userinfo传输限制。我可以将一个文件写入磁盘来解决这个问题,但在这种情况下它有点令人费解,因为我发送了大量数据。
我的字典是这样的:
data["sessionLog"]
键sessionLog
包含我的所有值。
示例数据:
"lat": 000000000000,
"long": 00000000000,
"name": "adfdsfs",
"location": "asdfasdfadsf",
"speed": 65
答案 0 :(得分:0)
假设一项数据(假设你有一个巨大的数组)看起来像这样:
"lat": 000000000000,
"long": 00000000000,
"name": "adfdsfs",
"location": "asdfasdfadsf",
"speed": 65
如果您将lat
和long
存储在Double
变量name
和location
String
中,则可为每个项执行以下操作1}}和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)
:
{{1}}
然后当然,你必须遍历这些项目,直到你达到接近你想要的极限的地方。但请注意,这是为String值使用UTF8编码提供的。因此,如果使用不同的编码,则值会发生变化。
但希望这会给你一些你可以使用的东西:)