如何使用 SwiftyJSON 获取字符串元素数组?
Posted
技术标签:
【中文标题】如何使用 SwiftyJSON 获取字符串元素数组?【英文标题】:How to fetch array of string elements with SwiftyJSON? 【发布时间】:2016-04-07 15:23:50 【问题描述】:我有一个可能包含字符串元素数组的 JSON,我想将它保存到一个变量中。到目前为止,我做到了:
import SwiftyJSON
(...)
var myUsers = [""]
if(json["arrayOfUsers"].string != nil)
myUsers = json["arrayOfUsers"] //this brings an error
错误提示:
不能用字符串类型的索引为 JSON 类型的值下标
如何安全地将这个数组传递给我的变量?
【问题讨论】:
您检查json["arrayOfUsers"]
是一个字符串,然后您尝试将此对象分配给一个字符串数组 - 它不起作用.请告诉我们json["arrayOfUsers"]
是什么,是字符串还是数组?
它是一个字符串数组,类似于["5523533","5gdsgdse","5gdsgsdb9","5432523d"]
@zcui93 我写了myUsers = json["arrayOfUsers"].array
,但后来我收到了一个错误cannot assign value of type [JSON] to type [String]
这是因为您将 myUsers
声明为 [""]
AKA [String]
【参考方案1】:
您必须获取 SwiftyJSON 在解析 JSON 数据时准备的字符串数组。
我将使用if let
而不是!= nil
,就像您在问题中所做的那样,我们将使用SwiftyJSON 的.array
可选getter:
if let users = json["arrayOfUsers"].array
myUsers = users
如果由于任何原因你得到一个类型错误,你可以显式地向下转换 SwiftyJSON 对象本身而不是使用 getter:
if let users = json["arrayOfUsers"] as? [String]
myUsers = users
请注意,您的字符串数组也未正确创建。这样做:
var myUsers = [String]()
或点赞:
var myUsers: [String] = []
两个版本同样有效,都创建一个空字符串数组。
【讨论】:
好的,还有一个问题——在这种情况下,myUsers
的声明呢?我该如何申报? var myUsers = [""]
导致类型不匹配的错误 :(
var myUsers = [String]()
或 var myUsers: [String] = []
嗯,太奇怪了,在这些更改后我收到了这个错误:imgur.com/RU70gLo这里可能有什么问题?
在答案中尝试我的第二个解决方案,用失望。
:) 现在它强调了这一点:json["array...
并说Ambiguous reference to member subscript
:|以上是关于如何使用 SwiftyJSON 获取字符串元素数组?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire/SwiftyJSON 获取 JSON 数组的第一个元素