我试图从得到thumbnail_images
我得到的JSON响应下面这张图: 因此,为了达到该url
我做了一个叫Posts
其中无法将类型'(key:String,value:AnyObject)'的值转换为期望的参数类型'[String:AnyObject]'
class Posts: NSObject {
var title: String?
var excerpt: String?
var content: String?
var thumbnail_images: [ThumbImages] = []
init(dict: [String: AnyObject])
{
super.init()
self.title = dict["title"] as? String
self.excerpt = dict["excerpt"] as? String
self.content = dict["content"] as? String
if let postImage = dict["thumbnail_images"] as? [String: AnyObject] {
for img in postImage {
self.thumbnail_images.append(ThumbImages(dict: img))
}
}
}
}
上线self.thumbnail_images.append(ThumbImages(dict: img))
我得到这个错误类:
Cannot convert value of type '(key: String, value: AnyObject)' to expected argument type '[String : AnyObject]'
这就是我的问题,但我认为这是相关的共享更多的代码,以达到url
我不得不更多类ThumbImages
和MedLargeImage
。它具有以下代码:
class ThumbImages: NSObject {
var medium_large: [MedLargeImage] = []
init(dict: [String: AnyObject]) {
super.init()
if let imgURL = dict["medium_large"] {
for iURL in imgURL as! [AnyObject] {
medium_large.append(MedLargeImage(dict: iURL as! [String : AnyObject]))
}
}
}
正如你可以看到的截图。所以最后我在房间里我能得到的网址:
class MedLargeImage: NSObject {
var imageUrl: String?
init(dict: [String: AnyObject]) {
super.init()
self.imageUrl = dict["url"] as? String
}
}
UPDATE:
如果我在文章类改变if let postImage
到:
if let postImage = dict["thumbnail_images"] as? [[String: AnyObject]] {
for img in postImage {
self.thumbnail_images.append(ThumbImages(dict: img))
}
}
的错误是走了但是,如果条件永远不会成真。
你把'postImage'作为一个数组,但它是一本字典。这就是为什么当循环时你得到这个元组,你从字典中获得键和值的元组。 – Moritz
@Moritz如果我将它更改为'if let postImage = dict [“thumbnail_images”]为? [[String:AnyObject]]'它可以工作,但'如果let'不移动来运行'for'命令。 –
不要在Swift 3中使用'[String:AnyObject]'作为JSON字典表示。 JSON字典是'[String:Any]',因为所有的JSON字典值都是(Swift)值类型。此外,看看你目前的'Posts'实现,我没有理由继承'NSObject'。 –