【发布时间】:2018-07-03 19:50:22
【问题描述】:
这有点棘手,但我会尽力解释。
我有 3 个数组 命名为:
- 所有数据
- 推特数据
- feedData
所有数据 包含一个名为 feedStruct 的结构,它有两个参数;类型和日期(两个字符串)
twitterData 包含来自 twitter 的 JSON,以在 TableViewController 中将 3 条推文显示为单元格
feedData 包含来自我的网页的 JSON 并显示包含该信息的单元格。此 JSON 与 twitter JSON 不同 - 它们没有相同的参数,因此它们被分成两个不同的数组。
当 JSON 被提取到 twitterData 和 feedData 中时,它们每个都有一个函数,将它们的类型(“twitter”或“web”)和推文/文章的日期作为 unix 标记添加到 allData (feedStruct) 数组中。这样我可以对 allData 数组进行排序,因此 单元格首先显示最新,如下所示。
然后我的 cellForRow 函数中有这段代码:
let sortedData = allData.sorted{ $0.date! > $1.date! }
if (sortedData[indexPath.row].type == "twitter") {
// Displaying twitter cell
let tweet = tweetData[indexPath.row]
return twitterCell
} else {
// Displaying web cell
let item: LocationModel = feedItems[indexPath.row - tweetData.count] as! LocationModel
return cell
}
然而问题是。目前,这三个 twitter 单元比网络上最近添加的文章更新。但是当文章比最近添加的推文更新时,let tweet 和 let item 的 indexPath.row 都会被弄乱,因为从两个不同的数组。
Feed 示例
- 文章 (indexPath.row = 0)
- 推文(indexPath.row = 1)
- 推文(indexPath.row = 2)
- Tweet (indexPath.row = 3)(只有 3 个数据 在数组中,这里它要求第 4 位)
- 文章 (indexPath.row = 4)(因为推文,跳转到文章 5 而不是 2)
- 文章 (indexPath.row = 5)
- 文章 (indexPath.row = 6)
希望它不会太混乱而无法理解。我根本不知道,如果这是通过日期显示数据的方式(使用三个数组)。 感谢您抽出宝贵时间阅读本文!
【问题讨论】:
-
添加另一个类:Meta,具有属性类型、属性日期和属性内容,其中内容是文章、推文或您想要的任何内容。你用一篇文章或一条推文初始化,然后相应地计算类型和日期。您只使用
bigArray中的 Meta 对象,它将被正确排序。在cellForRowAtIndexPath中,执行 `let meta = bigArray[indexPath.row];让细胞;切换 meta.type case tweet: cell = tableView.dequeue... as TweetCell, etc.
标签: ios arrays json swift twitter