我正在尝试过滤一个TWTRListTimelineDataSource(listSlug:listOwnerScreenName:apiClient),但是我很难弄清楚如何将数组转换为过滤器将接受的集合。我有两个数组,memberIDs大约有30个字符串,然后userFavorites有你最喜欢的任何一个成员I。我有一个TWTRTimelineView,可以显示来自所有成员的tweet,但是我想给出一个选项,只显示来自收藏夹的tweet。
这是我的原始代码:
var handlesToRemove = [String]()
for id in memberIDs {
if userFavorites.contains(id!) {
} else {
handlesToRemove.append(id!)
}
}
let filter = TWTRTimelineFilter()
filter.handles = handlesToRemove
dataSource.timelineFilter = filter但是它给了我一个错误,[String]不能转换为Set<AnyHashable>?
我尝试过更改handlesToRemove = Set<AnyHashable>()并使用handlesToRemove.insert(id!)而不是append()。
查看给我正确的handlesToRemove但过滤器不工作的调试,时间线是不变的。
从文件中 --如果我硬编码filter.handles = ["memberid1","memberid2"] --它可以工作并删除那些ID,但是我需要用户能够创建自己的过滤器。
这是可能的,还是有一个更好的方法来显示一个时间线的处理阵列?
发布于 2017-03-05 07:32:17
使用Set init将数组转换为Set也可以使用filter而不是在循环中添加对象。
let handlesToRemove = memberIDs.filter { !userFavorites.contains($0!) }
let filter = TWTRTimelineFilter()
filter.handles = Set(handlesToRemove)https://stackoverflow.com/questions/42605648
复制相似问题