嗨,我是Swift的新手,我正在尝试制作一个简单的应用程序。
该应用程序以JSON格式从服务器获取数据。
func addLangList(completion: @escaping ([String], [String]) -> Void) {
let request = NetworkRequest()
let reqUrl = NetworkInformation.serverAddr + "/word/purpose"
let parameters: Parameters = ["category": "lang"]
request.sendGetRequest(url: reqUrl, parameters: parameters, success: { (response) in
let json = JSON(response)
let isSuccess = json[ServerResponseKey.KEY_RESULT]
if isSuccess == true {
var resultMessage:JSON = json[ServerResponseKey.KEY_MESSAGE]
let lang = resultMessage["lang"].arrayValue
let purpose = resultMessage["purpose"].arrayValue
completion(lang, purpose)
}
}, fail: request.CommonNetworkFailureHandler)
}
通过使用Swiftyjson,该函数将接收到的数据转换为JSON格式。在闭包内部,调用者将调用“ completion”以进行进一步处理。在“ completion(语言,用途)”处发生错误。 Xcode说
“无法将类型'[JSON]'的值转换为预期的参数类型'[String]'”。
我猜是错误的,因为.arrayValue
不会将resultMessage["lang"]
更改为[String]
类型。...有人可以给我一些建议吗?
答案 0 :(得分:2)
那2个数组
let lang = resultMessage["lang"].array
let purpose = resultMessage["purpose"].array
类型为JSON
而不是String
的类型,您需要将其强制转换
let langStr = lang.map { $0.string }
let purposeStr = purpose.map { $0.string }
答案 1 :(得分:1)
let langStr = lang.map { $0.string }
let purposeStr = purpose.map { $0.string }