2017-03-05 5 views
0

TWTRListTimelineDataSource(listSlug:listOwnerScreenName:apiClient)을 필터링하려고하는데 배열을 필터가 받아 들일 수있는 집합으로 변환하는 방법을 알아 내려고합니다. 2 개의 배열 memberIDs에 약 30 개의 문자열이 있고 userFavorites 개의 멤버 ID 중 선호하는 것이 있습니다. TWTRTimelineView은 모든 회원의 트윗을 표시하지만 즐겨 찾기에서 트윗 만 표시하는 옵션을 제공하고 싶습니다.[문자열]을 TWTRTimelineFilter.handles에서 사용하기 위해 변환

이 내 원래의 코드입니다 :

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] 내가 handlesToRemove = Set<AnyHashable>()를 변경하고 APPEND 대신 handlesToRemove.insert(id!)를 사용하여 시도 Set<AnyHashable>?

으로 변환 아니라고 나에게 오류를 제공().

올바른 handleToRemove를 제공하는 Debug를 보면 필터가 작동하지 않지만 타임 라인은 변경되지 않습니다.

From the documentation 하드 코드 filter.handles = ["memberid1","memberid2"]이 작동하고 그 ID가 제거되면 사용자가 자신의 필터를 만들 수 있어야합니다.

가능한가 또는 배열 배열로 타임 라인을 표시하는 더 좋은 방법이 있습니까?

답변

0

배열을 Set으로 변환하려면 Set 초기화를 사용하십시오. 루프에 객체를 추가하는 대신 filter을 사용하십시오.

let handlesToRemove = memberIDs.filter { !userFavorites.contains($0!) } 
let filter = TWTRTimelineFilter() 
filter.handles = Set(handlesToRemove) 
+0

고마워요! 그게 훨씬 깔끔해. – Brad

+0

@Brad 환영 메이트 : 0 –