I downloaded the Smasthag demo app from course's site. Project builds fine (after small changes in Twitter, TwitterRequest etc. classes, because I use the latest Xcode 7b4) and works fine on simulator (I also had to add NSAppTransportSecurity
key to info.plist
), but not on a device - it doesn't fetch tweets . I tested it on both iPhone 6 with iOS 9 Public Beta and iPad 2 with iOS 8.4. Moreover, when app is running in the simulator and I change hashtag to search, whole tableView reloads with new tweets, but in the console I get this:
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 still runs fine, but this error bugs me. I couldn't fine anything about this _BSMachError in google (just one lonely Indonesian tweet). I can't also get why app doesn't fetch tweets on a device.
This seems to be an iOS 9 Beta bug. It definitely is related to presentation and dismissal of UIKeyboard (the system one). And, at that it doesn't happen all the time.
It's harmless, just annoying. The bug will probably be resolved in the next beta since its in a core system object.
To fix this issue you should set locale to en_US.
Change the private extension asTwitterDate in Tweet.swift to the following to fix issue on non en_US devices.
...
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
}
}
}
After this your application should load and show all data correctly.
You will need to add NSAppTransportSecurity as a dictionary and as the first child should be a bool named NSAllowsArbitraryLoads set to YES. Note that this opts out of NSAppTransportSecurity feature.
See the App Transport Security configuration notes here. Note that this documentation is brand new and has an error in it, if you want to opt out completely. The error is that the NSAllowsArbitraryLoads key isn't shown as a direct child of NSAppTransportSecurity.
Ideally what you should do is set the appropriate whitelisted domains and security settings.
https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With