2
从我的swift
应用程序我从Web服务提取数据。 数据来自一个数组:类型不符合协议序列类型 - 斯威夫特
{"hashtags": ["first", "second"]}
我希望把每一个包括hashtag我UITableView
的一个单独的行。我有逻辑来做到这一点,但首先 - 我在解析数据时遇到了错误的错误。
我写了一个自定义函数:
class SingleHashtag: NSObject {
var hashtagText: [String]
init(hashtagText: [String]) {
self.hashtagText = hashtagText
super.init()
}
class func fromJSON(json: JSON) -> SingleHashtag? {
let hashtagText:[String] = json["hashtags"].arrayValue.map { $0.stringValue}
return SingleHashtag(hashtagText: hashtagText)
}
}
,然后在我的主I类有:
Alamofire.request(.GET, "\(serverURL)/hashtags"/*, headers: headers*/)
.validate()
.responseJSON { response in
print(response.description)
switch response.result {
case .Success:
dispatch_async(dispatch_get_main_queue(),{
self.items.removeAllObjects()
if let jsonData = response.result.value as? [[String: AnyObject]] {
for hashtag in jsonData {
if let userHashtags = SingleHashtag.fromJSON(JSON(hashtag)){
for hash in userHashtags {
self.items.addObject(hash)
self.hashtagTable.reloadData()
}
}
}
}
self.hashtagTable.reloadData()
})
case .Failure(let error):
print(error)
}
}
,但此行:
for hash in userHashtags {
编译过程中抛出一个错误:
type SingleHashtag does not conform to protocol 'SequenceType'
我试着添加as AnyObject
但这没有帮助。你能告诉我这里可能有什么问题吗?
'userHashtags'是一个'SingleHashtag',这不是一个序列。也许你的意思是'用于hashHashtags.hashtagText {'? –
嗯,我试过了,但现在在我的方法cellForRowAtIndexPath我有一行'让哈希:SingleHashtag = self.items [indexPath.row]为! SingleHashtag'并且它会抛出一个错误无法将类型'NSTaggedPointerString'(0x1a0c44378)的值转换为'SingleHashtag',所以我不确定在我的代码中解析的哪一点是错误的... - – user3766930
你说数据来作为一个数组,但你列出了一个字典({“hastags”:[“first”,“second”,“third”]}) - 你得到这些字典的数组吗?或者你只是得到hashtags字典? – BJHStudios