NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程

Posted

技术标签:

【中文标题】NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程【英文标题】:NSMutableArray true convert to json output and post it to remote with Alamofire in Swift 3 【发布时间】:2017-01-31 13:18:09 【问题描述】:

我有来自CoreDataNSMutableArray 代码,我想将其转换为Json 数组并将其发布到远程使用Alamofire,我尝试将myArray 转换为jsonArray,但不正确。我的代码在下面。

           let maras = try appDelegate.managedObjectContext.fetch(fetchRequest) as! [Manager]

  if maras.count > 1 

                let prod: NSMutableDictionary = NSMutableDictionary()
                let prodArray:NSMutableArray = NSMutableArray()

                for i in 0 ..< maras 
                    let a = maras[i]
                    prod.setValue(a.val1, forKey: "val1")
                    prod.setValue(a.val2, forKey: "val2")
                    prod.setValue(a.val3, forKey: "val3")
                    prod.setValue(a.val4, forKey: "val4")
                    prodArray.add(prod)
                

               print(prodArray)   // OUTOUT UNDER BELOW

在下面输出prodArrayjson

(
        
        val1 = "2324";
        val2 = "1212";
        val3 = 234;
        val4 = "234234";
    ,
        
        val1 = "223324";
        val2 = "12232312";
        val3 = 233242344;
        val4 = "234223423434";
    
)

必须是有效的JSON,如下所示。 (我的项目中还有SwiftyJson

[
    "val1": "2324",
    "val2": "1212",
    "val3": 234,
    "val4": "234234"
, 
    "val1": "223324",
    "val2": "12232312",
    "val3": 233242344,
    "val4": "234223423434"
]

之后我想用Alamofire将我的prodArray发布到远程。我的代码在下面

  Alamofire.request(Posturl, method: .post, parameters: prodArray, encoding: URLEncoding.httpBody, headers: headers)
                .responseData response in
                   let success = json["status"]["type"].boolValue

                    if success == true 



            

            

【问题讨论】:

@Eric ty 但是 alamofire 行中的 prodArray = params 给出错误不接受它? 我总是看到 json [String,Any] 这个你可以直接添加到 alamofire 【参考方案1】:
var json:[String:Any] = [:]


var jsonItem:[String:Any] = [:]

var jsonItemArray:[[String:Any]] = []

    jsonItem = [:]

    jsonItem["val1"] = "2324"
    jsonItem["val2"] = "1212"
    jsonItem["val3"] = 234
    jsonItem["val4"] = "234234"
    jsonItemArray.append(jsonItem)

    jsonItem = [:]
    jsonItem["val1"] = "223324"
    jsonItem["val2"] = "12232312"
    jsonItem["val3"] = 233242344
    jsonItem["val4"] = "234223423434"
    jsonItemArray.append(jsonItem)

print(jsonItemArray)

json["data"] = jsonItemArray

print(json)

[[“val2”:“1212”,“val3”:234,“val4”:“234234”,“val1”:“2324”],[“val2”:“12232312”,“val3”:233242344 , "val4": "234223423434", "val1": "223324"]]

[“数据”:[[“val2”:“1212”,“val3”:234,“val4”:“234234”,“val1”:“2324”],[“val2”:“12232312”, “val3”:233242344,“val4”:“234223423434”,“val1”:“223324”]]]

您应该将代码更改为:

var prodArray:[[String:Any]] = []

for i in 0 ..< maras 
    let a = maras[i]

    let prod:[String:Any]
    prod["val1"] = a.val1
    prod["val2"] = a.val2
    prod["val3"] = a.val3
    prod["val4"] = a.val4
    prodArray.append(prod)

【讨论】:

prodArray.add(prod) 给我错误:'[[String : Any]]' 类型的值没有成员'add' 我的第一部分代码示例在操场上工作 - 你能发布你对 prodArray 的确切定义吗? 复制粘贴错误 - 应该是 prodArray.append(prod) - 我编辑我的答案

以上是关于NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程的主要内容,如果未能解决你的问题,请参考以下文章

将 FMResultSet 转换为 NSMutableArray?

如何将 NSMutableArray 转换为 Swift 数组?

如何将 NSMutableArray 转换为 NSArray?

如何在 iphone sdk 中将 NSArray/NSMutableArray 转换为 NSFetchedResultsController?

无法将“NSMutableArray”类型的值转换为预期的参数类型“[SKTexture]”

Objective-c NSDictionary 以特定顺序转换为 NSMutableArray