如何使用 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 数组的第一个元素

使用 SwiftyJSON 选择字符串数组

swiftyjson 从 json 数组中获取字符串

SwiftyJSON 数组元素?

如何使用 SwiftyJSON 从我的 JSON 中获取选定的元素并将其打印在控制台上?

如何从 JSON 数组 SwiftyJSON 中获取数据?