转换 [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)
我正在尝试过滤 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)