返回一个空的 JSON 数组导致 Swift 中的越界错误

Posted

技术标签:

【中文标题】返回一个空的 JSON 数组导致 Swift 中的越界错误【英文标题】:Returning an empty JSON array causing out of bounds error in Swift 【发布时间】:2016-02-18 01:13:32 【问题描述】:

我在 Swift 中访问一个 JSON 数组:

genres: [

id: 6,
title: "Comedy"

],

我正在使用代码:

     if let genreInfo = jsonResult["genres"]?[0] as? [String: AnyObject]
        let genre = genreInfo["title"] as? String
        genreArray.append(genre)

如果存在流派但如果流派 JSON 数据为 [ ] 则有效,我得到一个数组越界错误。有没有办法重构它,所以它不会导致错误?

【问题讨论】:

【参考方案1】:

问题是你假设,如果数组存在,那么它至少有一个值。这会导致您的问题。

试试这个

if let genreInfo = jsonResult["genres"]?.first as? [String: AnyObject] 
    let genre = genreInfo["title"] as? String
    genreArray.append(genre)

【讨论】:

我刚试过你的代码,它抛出错误:“'AnyObject'类型的值首先没有成员”。 @tylerD:也许你把它改成了firstObject?在这种情况下,这就是为什么你有一个NSArray,而不是一个原生的 Swift 数组。

以上是关于返回一个空的 JSON 数组导致 Swift 中的越界错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 和 Swift 返回嵌套 JSON 数组中的值

Swift - JSON解码返回空数组

Facebook Graph API me / accounts返回空的Json数据数组

JSON .count 数组在 Swift 4 中总是返回 0

如何返回数据类型:Swift 中的 NSDictionary

是啥导致了 Swift 中的“无法转换类型”错误?