2015-07-23 9 views
11

Ho scaricato l'app demo Smasthag dal course's site. Il progetto si integra bene (dopo piccole modifiche nelle classi Twitter, TwitterRequest ecc., Perché uso l'ultimo Xcode 7b4) e funziona perfettamente con il simulatore (ho anche dovuto aggiungere NSAppTransportSecurity per info.plist), ma non su un dispositivo - non lo fa prendi i tweet L'ho provato su iPhone 6 con iOS 9 Public Beta e iPad 2 con iOS 8.4. Inoltre, quando applicazione è in esecuzione nel simulatore e ho cambiare hashtag per la ricerca, tutta tableView ricarica con nuovi tweets, ma nella console ottengo questo:_BSMachError durante l'esecuzione dell'app Stanash CS193p Smashtag

2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid capability (20) 
2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid name (15) 

App funziona ancora bene, ma questo bug di errore me. Non ho potuto fare niente su questo _BSMachError in google (solo un tweet indonesiano solitario). Non riesco nemmeno a capire perché l'app non preleva i tweet su un dispositivo.

+2

Così ho trovato il motivo per cui applicazione non è stato il recupero tweets su un dispositivo. In realtà stava recuperando i tweet, ma non poteva convertirli nella sua struttura dati interna. Il problema era nell'estensione di stringa fornita con Twitter class = 'asTwitterDate'. Usa 'NSDateFormatter' per ottenere la data da String. L'estensione presuppone implicitamente che la lingua del formattatore sia l'inglese (che era vero per il simulatore) e che i miei dispositivi siano locali. L'impostazione esplicita del codice locale all'inglese ha risolto il problema. –

+0

Hai ragione. La modifica delle impostazioni internazionali in Tweet.swift risolve il problema. Grazie! Codice pubblicato per risolvere il problema. – CTiPKA

risposta

5

Per risolvere questo problema, è necessario impostare la locale su en_US.

Modificare l'estensione privata asTwitterDate in Tweet.swift al seguente per risolvere il problema su dispositivi non en_US.

... 
private extension String { 
    var asTwitterDate: NSDate? { 
    get { 
     let dateFormatter = NSDateFormatter() 
     dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy" 
     dateFormatter.locale = NSLocale(localeIdentifier: "en_US") 
     let createdAt = dateFormatter.dateFromString(self) 
     return createdAt 
    } 
    } 
} 

Dopo questo l'applicazione dovrebbe caricare e mostrare tutti i dati correttamente.

0

Ho riscontrato lo stesso problema da quando ho spostato la tastiera della tastiera di sistema sulla tastiera auto-definita. Tuttavia non ha effetto sulla mia app in esecuzione.

+0

Avevo la tastiera per textField impostata sulla tastiera di Twitter, ma dopo averla modificata sulla tastiera predefinita l'errore è ancora presente. –

5

Sarà necessario aggiungere NSAppTransportSecurity come dizionario e poiché il primo figlio deve essere un bool denominato NSAllowsArbitraryLoads impostato su YES. Si noti che questa opzione viene disattivata dalla funzione NSAppTransportSecurity.

enter image description here

Vedi le note di configurazione App Transport Security qui. Si noti che questa documentazione è nuova di zecca e ha un errore in esso, se si desidera disattivare completamente. L'errore è che la chiave NSAllowsArbitraryLoads non viene visualizzata come figlia diretta di NSAppTransportSecurity.

Idealmente, ciò che dovresti fare è impostare i domini autorizzati autorizzati e le impostazioni di sicurezza.

https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

+0

Ce l'ho, l'ho menzionato nella mia domanda. –

+0

Ah, mi scuso. In realtà ho detto questo perché la documentazione di Apple su NSAppTransportSecurity mostra la gerarchia plist in modo errato. La chiave NSAllowsArbitraryLoads consente un livello più profondo nella tecnologia rispetto a quello che dovrebbe essere. Mi sono reso conto solo quando ho realizzato il video WWDC. Anche io stavo ottenendo quegli errori, finché non l'ho cambiato in modo appropriato. Forse è solo una coincidenza. https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/ –

+0

non ha aiutato, ancora lo stesso errore –

8

Questo sembra essere un bug Beta iOS 9. Sicuramente è legato alla presentazione e al licenziamento di UIKeyboard (quello del sistema). E a questo non succede sempre.

È innocuo, solo fastidioso. Il bug verrà probabilmente risolto nella prossima beta dal momento che si trova in un oggetto di sistema principale.

+0

Ho ricevuto questo messaggio e non ha nulla a che fare con la tastiera . Si verifica ruotando il simulatore di iOS 9. E io non sono in beta su iOS 9 o XCode 7. Quindi sarà probabilmente almeno un anno prima di risolvere questo problema. –

+0

Sono tornato indietro nel mio codice e ho scoperto che era successo durante il congedo della tastiera. – lxmfly123

0

Se sono presenti attributi opachi per qualsiasi componente in tale controllo, è sufficiente rimuoverlo e utilizzare l'attributo nascosto.

Esempio:

//invisibleTextView.alpha = 0.0f; 
invisibleTextView.hidden = YES; 
Problemi correlati