Swift 将字符串格式的 NSMutableArray 转换为 NSMutableArray

Swift convert NSMutableArray in string format to NSMutableArray

大家好,我创建了一个 NSMutableArray,将其发送到我的 mysql 服务器,将其转换为 base64,然后当应用程序读取数据时,它将 base64 代码解码为字符串格式。现在我试图将字符串转换回 NSMutableArray。我似乎无法让它工作这里是将它转换为字符串的代码。

let string = String(data: (Data(base64Encoded:((data?.value(forKey: "14112017") as! NSArray)[0] as! NSDictionary)["data"] as! String)!), encoding: .utf8)!

所以我的问题的答案最终是先将我的数组转换为 JSONstring,这是我使用的方法:

let jsonData: Data? = try? JSONSerialization.data(withJSONObject: UniversalArray)
let jsonString = String(data: jsonData!, encoding: .utf8)

然后在检索它时,我取回了我的 jsonString,但是它有“\”,我用它来替换:

let cleanJsonString = myData.replacingOccurrences(of: "\", with: "")

然后为了最终完成它,我只是将这个 cleanJsonString 发送到这个函数:

func convertToDictionary(text: String) -> Any? {

    if let data = text.data(using: .utf8) {
        do {
            return try JSONSerialization.jsonObject(with: data, options: [])
        } catch {
            print(error.localizedDescription)
        }
    }

    return nil

}

调用这个函数时我使用了这个:

 let array = convertToDictionary(text: myMutableArray) as? [AnyObject]

感谢大家的大力支持,这是对我制造的这个乱七八糟的问题的回答。

这有两个部分:序列化您的数组以传输到您的服务器,然后从服务器反序列化它。

我们需要先查看您用于序列化数组的代码。 (将其转换为字符串的代码。)根据您 post,它似乎是 JSON 格式。如果是这样,您可以跳过 base64 编码步骤,具体取决于您对数据的处理方式。 JSON 是传输到远程服务器的良好格式。您通常不会在传输前对 JSON 进行 base64 编码。

如果您收到的 JSON 然后是 base64 编码的,您需要将其反编码回数据,然后使用 JSONSerializer class 将JSON 返回数组或字典等对象:

let data = Data(base64Encoded: base64DataFromServer)
guard let object = try? JSONSerialization.jsonObject(with: data) else {
  return nil
}

(请注意,您 post 编辑的 JSON 包含字典作为顶级对象,而不是数组。)