【问题标题】:Encode between Objective-C and swift, does not matchObjective-C 和 swift 之间的编码,不匹配
【发布时间】:2018-06-11 12:53:26
【问题描述】:

我的应用程序的网络请求已编码。

在 Objective-C 中

NSData *encodeData = [str dataUsingEncoding:NSUTF8StringEncoding];
dataStr = [encodeData base64EncodedStringWithOptions:0];

我想把它转换成 swift。 这是快速代码:

let dataEncodeTemp = dataTempStr.data(using: String.Encoding.utf8)
let dataStr = dataEncodeTemp?.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))

我想,结果应该是一样的。但事实并非如此。

Objective-C 数据:

(lldb) po str// initial
{"userType":2,"password":"qazwsx2","account":"15921810000"}

(lldb) po dataStr // encoded
eyJ1c2VyVHlwZSI6MiwicGFzc3dvcmQiOiJxYXp3c3gyIiwiYWNjb3VudCI6IjE1OTIxODE3MDUzIn0=

迅捷数据:

po dataTempStr // initial
"{\"userType\":2,\"account\":\"15921810000\",\"password\":\"qazwsx2\"}"

(lldb) po dataStr

▿ Optional<String> // encoded
  - some : "eyJ1c2VyVHlwZSI6MiwiYWNjb3VudCI6IjE1OTIxODE3MDUzIiwicGFzc3dvcmQiOiJxYXp3c3gyIn0="

我想知道原因,并解决它。

我会试试桥。

有什么好的解决办法吗?

【问题讨论】:

  • 那是两个不同的字符串(不同顺序的键值对)。为什么 Base64 编码的字符串应该相等?

标签: objective-c swift encode


【解决方案1】:

这些永远不会匹配,因为这两个字符串具有不同顺序的 JSON 键;一个是userTypepasswordaccount;另一个是userTypeaccountpassword

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多