转换 [String] 以在 TWTRTimelineFilter.handles 中使用

Converting a [String] for use in TWTRTimelineFilter.handles

我正在尝试过滤 TWTRListTimelineDataSource(listSlug:listOwnerScreenName:apiClient) 但我无法弄清楚如何将数组转换为过滤器将接受的集合。 我有 2 个数组,memberIDs 有大约 30 个字符串,然后 userFavorites 有你最喜欢的成员 ID。我有一个 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!) 而不是 append()。

查看为我提供正确 handlesToRemove 但过滤器不起作用的调试,时间线未更改。

From the documentation 如果我硬编码 filter.handles = ["memberid1","memberid2"] 它可以工作并删除那些 ID,但我需要用户能够制作他们自己的过滤器。

这是可能的还是有更好的方法来显示带有句柄数组的时间线?

使用 Set init 将数组转换为 Set 也使用 filter 而不是在循环中添加对象。

let handlesToRemove = memberIDs.filter { !userFavorites.contains([=10=]!) }
let filter = TWTRTimelineFilter()
filter.handles = Set(handlesToRemove)