Swift无法访问单个对象数组

时间:2017-08-29 16:11:16

标签: arrays json swift xcode

我正在尝试从json文件访问数据。问题是一些值是NSSingleObjectArrays(只有项目的数组),我不能把它变成字符串。

class CarObject {
    var pictureURL: String!
    var carURL: String!
    var carPrice: String!
    required init(json: [String: AnyObject]) {
        pictureURL = json["galleryURL"] as! String
        carURL = json["viewItemURL"] as! String
        carPrice = json["currentPrice"] as! String
        }
}

我收到以下错误消息:

  

无法将'__NSSingleObjectArrayI'(0x10a2ec548)类型的值转换为'NSString'(0x109729440)。

我试图像这样访问它们:

"json["galleryURL"][0] as String!" 

但是我收到以下错误:

Type 'Any?' has no subscript members

值如下所示:

  

galleryURL =(“一个值”);

你们知道如何轻松访问它们吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

首先将事物转换为适当的类型。听起来你的值是包含单个字符串的数组,所以像这样:

var pictureURL: URL

required init?(json: [String: AnyObject]) {
    guard let pictureURLString = (json["galleryURL"] as? [String])?.first,
        let pictureURL = URLComponents(string: pictureURLString)?.url else {
        return nil
    }

    self.pictureURL = pictureURL
}

此外,您可能需要重新考虑您用于属性的类型。 pictureURLcarURL属性是网址,因此更有意义的是URLcarPrice属性可能是数字,因此它更有意义Double