Arrays Swift Can';t访问单对象数组
我正在尝试从json文件访问数据。问题是有些值是NSSingleObjectArray(仅包含项的数组),我无法将其转换为字符串Arrays Swift Can';t访问单对象数组,arrays,json,swift,xcode,Arrays,Json,Swift,Xcode,我正在尝试从json文件访问数据。问题是有些值是NSSingleObjectArray(仅包含项的数组),我无法将其转换为字符串 class CarObject { var pictureURL: String! var carURL: String! var carPrice: String! required init(json: [String: AnyObject]) { pictureURL = json["galleryURL"] as
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
}
}
我收到以下错误消息:
无法将类型为“\uu NSSingleObjectArrayI”(0x10a2ec548)的值强制转换为“NSString”(0x109729440)
我试图这样访问它们:
"json["galleryURL"][0] as String!"
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
}
但我得到了以下错误:
Type 'Any?' has no subscript members
这些值如下所示:
"json["galleryURL"][0] as String!"
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
}
galleryURL=(“一个值”)
你们知道如何轻松访问它们吗?
谢谢 首先将内容转换为适当的类型。听起来您的值是包含单个字符串的数组,因此如下所示:
"json["galleryURL"][0] as String!"
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
}
此外,您可能需要重新考虑用于属性的类型。
pictureURL
和carURL
属性都是URL,因此将它们键入为URL
更有意义。carPrice
属性很可能是数字属性,因此它更有意义,因为Double
只需首先将内容转换为适当的类型。听起来您的值是包含单个字符串的数组,因此如下所示:
"json["galleryURL"][0] as String!"
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
}
此外,您可能需要重新考虑用于属性的类型。
pictureURL
和carURL
属性都是URL,因此将它们键入为URL
更有意义。carPrice
属性很可能是数字属性,因此作为一个Double
如何将数组“转换”为字符串更有意义?这个概念到底是什么意思?这不是把大象变成马吗?你到底想做什么?这是数组。像访问任何数组一样,从数组访问对象。“键入“any?”没有下标成员”将是一个很好的搜索短语。你知道,以防万一别人以前有过这个问题。如果json[“galleryURL”]
是字符串数组,则需要将其转换为字符串数组,以便编译器知道这一点。如何将数组“转换”为字符串?这个概念到底是什么意思?这不是把大象变成马吗?你到底想做什么?这是数组。像访问任何数组一样,从数组访问对象。“键入“any?”没有下标成员”将是一个很好的搜索短语。你知道,以防万一别人以前有过这个问题。如果json[“galleryURL”]
是字符串数组,则需要将其强制转换为字符串数组,以便编译器知道这一点。URLComponents
的意义是什么?1.OP只需要一个字符串,而不是URL。2.如果OP确实需要URL,那么为什么不直接使用URL(字符串:)
而不是URLComponents
?URLComponents
是目前推荐的从字符串创建URL的方法,因为它的行为比URL(字符串:)
更现代。从文档中可以看出:“这个结构根据RFC3986解析和构造URL。它的行为与URL结构有细微的不同,后者符合旧的RFC。”你读过问题的代码了吗?你看到我的第一张纸条了吗。不需要URL
。该值显然意味着包含URL,因此URL
比String
更适合该属性的类型。使用正确的工具进行作业。我还建议carPrice
属性应该是Double
而不是String
。为了解决您的下一个问题:删除所有不必要的隐式展开和强制展开选项也是有意的,因为最小化这些是一个很好的实践。URLComponents
的意义是什么?1.OP只需要一个字符串,而不是URL。2.如果OP确实需要URL,那么为什么不直接使用URL(字符串:)
而不是URLComponents
?URLComponents
是目前推荐的从字符串创建URL的方法,因为它的行为比URL(字符串:)
更现代。从文档中可以看出:“这个结构根据RFC3986解析和构造URL。它的行为与URL结构有细微的不同,后者符合旧的RFC。”你读过问题的代码了吗?你看到我的第一张纸条了吗。不需要URL
。该值显然意味着包含URL,因此URL
比String
更适合该属性的类型。使用正确的工具进行作业。我还建议carPrice
属性应该是Double
而不是String
。为了解决您的下一个问题:删除所有不必要的隐式展开和强制展开选项也是有意的,因为将它们最小化是一种好的做法。