我正在尝试过滤 TWTRListTimelineDataSource(listSlug:listOwnerScreenName:apiClient)
但我无法弄清楚如何将数组转换为过滤器将接受的集合。
我有 2 个数组,memberIDs
大约有 30 个字符串,那么 userFavorites
其中包含您收藏的memberID。我有一个TWTRTimelineView
显示所有成员的推文,但我想提供一个仅显示收藏夹中的推文的选项。
这是我的原始代码:
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!)
而不是追加()。
看看调试,它给了我正确的handlesToRemove,但过滤器不起作用,时间线没有改变。
From the documentation如果我硬编码filter.handles = ["memberid1","memberid2"]
它可以工作并删除这些 ID,但我需要用户能够制作自己的过滤器。
这可能吗?或者是否有更好的方法来显示带有句柄数组的时间线?
最佳答案
使用Set
init将数组转换为Set
也使用filter
而不是在循环中添加对象。
let handlesToRemove = memberIDs.filter { !userFavorites.contains($0!) }
let filter = TWTRTimelineFilter()
filter.handles = Set(handlesToRemove)
关于ios - 转换 [String] 以在 TWTRTimelineFilter.handles 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42605648/