假设我有一个JSON数组的3个字典,每个字典都有自己的类型(demo,entry,comment)。UITableViewCell如何知道从数组或字典中加载的JSON
[
{
"_id": "random ID",
"profile": "random ID Profile",
"demo": {
"_id": "random ID",
"profile": {
"_id": "random ID",
"name": "name",
"username": "username",
"description": "description",
"picture": "/picture"
},
"path": "/path",
"created": "date"
},
"type": "demo",
"source": "570aa8f647a70780a7111e91",
"__v": 0,
"created": "date"
},
{
"_id": "random ID",
"comment": "random comment ID",
"type": "comment",
"source": "57077c4e356c10371ca91ad9",
"__v": 0,
"created": "date"
},
{
"_id": "random ID",
"entry": "random entry ID",
"type": "entry",
"source": "57077c4e356c10371ca91ad9",
"__v": 0,
"created": "date"
}
]
现在我正在检查请求中的类型,因此我只获得演示。
func getTimeline(urlString: NSURL, completion: ([ModelDemos]) -> Void) {
Alamofire.request(.GET, urlString).responseJSON { response in
if let httpResponse = response.response {
switch httpResponse.statusCode {
case 200:
var modelTimeline = [ModelDemos]()
if let demos = response.result.value as? [JSONDictionary] {
for demo in demos {
if let type = demo["type"] as? String {
if type == "demo" {
if let demo = demo["demo"] as? JSONDictionary {
let JSON = ModelDemos(data: demo)
modelTimeline.append(JSON)
}
}
}
}
} else { print("not working") }
dispatch_async(dispatch_get_main_queue()) {
completion(modelTimeline)
print("Am I back on the main thread ? Response: \(NSThread.isMainThread())")
}
default:
return
}
}
}
}
这在我TimelineViewController设置完成方法后
var timelineDemos = [ModelDemos]()
func runApiManagerTimeline() {
guard let urlString = urlString else {return}
apiManagerCurrentUserProfile.getTimeline(urlString, completion: didGetCurrentUserProfileDemos)
}
func didGetCurrentUserProfileDemos(demos: [ModelDemos]) {
timelineDemos = demos
timelineCollectionView.reloadData()
}
一切工作正常,我只得到了演示词典,我可以将其加载到DemoUITableViewCell。
现在我必须为数组中的每个字典创建3种不同类型的UITableViewCell。将它想象成Facebook供稿,其中每个词典不同,并且数量不断增长。
我该如何告诉每个Cell它应该加载哪些内容?
你的问题最后没有明确说明,请在你的问题中解释一下你的意思是“告诉每个单元格应该加载哪些内容”。你想拥有多少个细胞? 1字典? –
这就像Facebook或Instagram应用程序中的通知标签,可能有无限数量的字典(单元格),但每个单元格都有它自己的信息,并按每个通知发布日期排序。 –
如果字典是一种演示,我想在DemoUItableViewCell中加载这些信息,如果字典的类型为Entry,我想在EntryUItableViewCell中加载这些信息,依此类推......但按照给我的顺序JSON响应。 –