运行斯坦福的CS193p Smashtag应用程序时_BSMachError

Seb*_*ski 11 cs193p ios swift

我从课程网站下载了Smasthag演示应用程序.项目构建正常(在Twitter,TwitterRequest等类的小变化之后,因为我使用最新的Xcode 7b4)并且在模拟器上工作正常(我还必须添加NSAppTransportSecurity密钥info.plist),但不在设备上 - 它不会获取推文.我在带有iOS 9 Public Beta的iPhone 6和带有iOS 8.4的iPad 2上进行了测试.此外,当app在模拟器中运行并且我更改了hashtag以进行搜索时,整个tableView会重新加载新的推文,但在控制台中我得到了这个:

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)
Run Code Online (Sandbox Code Playgroud)

应用仍然运行正常,但这个错误让我感到困扰.我对谷歌中的这个_BSMachError一无所知(只有一条孤独的印尼语推文).我不知道为什么app不能在设备上获取推文.

tok*_*one 8

这似乎是一个iOS 9 Beta错误.它肯定与UIKeyboard(系统一)的呈现和解雇有关.并且,它始终不会发生.

它是无害的,只是烦人的.该错误可能会在下一个测试版中解决,因为它在核心系统对象中.


Joe*_*son 5

您需要将NSAppTransportSecurity添加为字典,并且第一个子节点应该是名为NSAllowsArbitraryLoads的bool设置为YES.请注意,这会选择NSAppTransportSecurity功能.

在此输入图像描述

请参阅此处的App Transport Security配置说明.请注意,如果您想完全退出,则此文档是全新的,并且包含错​​误.错误是NSAllowsArbitraryLoads键未显示为​​NSAppTransportSecurity的直接子项.

理想情况下,您应该做的是设置适当的列入白名单的域和安全设置.

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


CTi*_*PKA 5

要解决此问题,您应将语言环境设置为en_US.

将Tweet.swift中的私有扩展名asTwitterDate更改为以下内容以修复非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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在此之后,您的应用程序应加载并正确显示所有数据.