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 【问题描述】:我有来自CoreData
的NSMutableArray
代码,我想将其转换为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
在下面输出prodArray
错json
(
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?