2015-09-19 9 views
7

Sto usando Twitter.sharedInstance().session()?.userName per visualizzare l'indirizzo twitter di un utente in un'etichetta in iOS (in Swift). Ora noto che riceviamo il seguente avviso di ritiro:Alternativa per Twitter.sharedInstance(). Session() ?. userName dopo la deprecazione su iOS Swift

- [sessione Twitter] sarà presto deprecato. E ' raccomandato che gli utenti utilizzano - [session TWTRSessionStore] o - [TWTRSessionStore sessionForUserID:] se stanno gestendo più utenti

sono passato al modo raccomandare, e aspettava di trovare una proprietà .userName in giro, ma potrebbe non trovarne uno

Come vanno le persone a passare lo scambio Twitter.sharedInstance().session()?.userName in avanti?

+0

Hi hai trovato una soluzione? – Mariam

+0

@mariam no ancora. –

+0

Ok, grazie. Cercherò su di esso. – Mariam

risposta

6

Se stai ancora cercando la soluzione, ecco uno:

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)") 
     } 
    } 
} 
9

Ok, quindi stavo avendo un problema anche con questo, e sembra che tutte le modifiche più recenti (che sono documentate in modo molto scarsamente documentato) siano progettate per consentire un migliore controllo su più sessioni utente esistenti allo stesso tempo. Ho fatto qualche ricerca nella classe TWTRSessionStore che menzionano nell'avvertimento e quello che ho trovato è che sebbene l'implementazione concreta di TWTRSessionStore non abbia una proprietà -session, aderisce ai seguenti protocolli <TWTRUserSessionStore, TWTRGuestSessionStore, TWTRSessionRefreshingStore> e lo TWTRUserSessionStore ha uno -session proprietà.

Quindi, per riassumere, questo è il modo accedo out:

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

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

lo sto facendo in Objective-C, in modo chiaro, ma la versione Swift è molto simile.

+0

Posso vedere che sessionStore ha una proprietà di sessione; ma per quanto posso vedere la proprietà della sessione non ha userName. Per quanto posso vedere la risposta @tadija è la strada da percorrere; sembra un sacco di codice solo per ottenere un nome utente ma funziona e si ottiene un sacco di altri elementi nell'utente (che è il tipo TWTRUser) –

+1

@ risposta di tadija e la mia risposta esegue esattamente le stesse chiamate di metodo, l'unica la differenza è che effettua la chiamata all'API dopo aver ottenuto l'ID utente per ottenere maggiori informazioni sull'utente (incluso il nome utente), ma quella chiamata API è rimasta invariata da prima del passaggio alla nuova sessione sessionStore. –

1

Per Swift,

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