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