Twitter.sharedInstance().session()?.userName 在 iOS Swift 弃用后的替代方案

Alternative for Twitter.sharedInstance().session()?.userName after deprecation on iOS Swift

我一直在使用 Twitter.sharedInstance().session()?.userName 在 iOS(Swift 中)的标签中显示用户的推特地址。现在我注意到我们收到以下弃用警告:

-[Twitter session] will soon be deprecated. It is recommended that users use -[TWTRSessionStore session] or -[TWTRSessionStore sessionForUserID:] if they are managing multiple users

我切换到推荐方式,本以为能找到.userName属性左右,结果没找到

人们如何换掉 Twitter.sharedInstance().session()?.userName 前进?

好的,所以我也遇到了这个问题,似乎所有较新的更改(公认的记录很少)都是为了更好地控制同时存在的多个用户会话而设计的.我深入研究了他们在警告中提到的 TWTRSessionStore class,我发现虽然 TWTRSessionStore 的具体实现没有 -session 属性 ,它遵守以下协议 <TWTRUserSessionStore, TWTRGuestSessionStore, TWTRSessionRefreshingStore> 并且 TWTRUserSessionStore 确实有 -session 属性。

所以,总而言之,我是这样退出的:

NSString *userID = [[[[Twitter sharedInstance] sessionStore] session] userID];

if(userID){
    [[[Twitter sharedInstance] sessionStore] logOutUserID:userID];
}

我在 Objective-C 中做的,很明显,但是 Swift 版本非常相似。

如果您仍在寻找解决方案,这里有一个:

if let session = Twitter.sharedInstance().sessionStore.session() {
    let client = TWTRAPIClient()
    client.loadUserWithID(session.userID) { (user, error) -> Void in
        if let user = user {
            print("@\(user.screenName)")
        }
    }
}

对于Swift、

    if let userID = Twitter.sharedInstance().sessionStore.session()?.userID {
        Twitter.sharedInstance().sessionStore.logOutUserID(userID)
    }