【发布时间】:2014-06-16 09:36:20
【问题描述】:
我目前正在开发一个集成 Facebook 的 iOS 应用程序,但在使用 Swift 进行调查时遇到了一些问题(使用 ObjC 我没有问题)。
问题是,当来自另一个 APP(在本例中为 WebBrowser 中的 FB)时,这是在 appDelegate 中执行的方法:
func application(
application: UIApplication,
openURL url: NSURL,
sourceApplication: NSString,
annotation: AnyObject)
-> Bool {
let appString : String = sourceApplication as String // Try to convert format => EXCEPTION
let appString : String = String(sourceApplication) // 'SSS' Suggestion: EXCEPTION
println(sourceApplication) // Try to print the value => EXCEPTION
return FBAppCall.handleOpenURL(url, sourceApplication:sourceApplication,
withSession:session) // With Parse => EXCEPTION
}
在该方法中,我在使用“sourceApplication”参数时遇到了真正的问题。我尝试使用它,我得到一个例外。我尝试转换它,另一个异常......甚至无法记录它的值,因为它在访问它的值时崩溃。将函数签名中的参数类型更改为 String 无效。
这是我得到的错误:
EXEC_BAD_ACCESS
我一直在追查,直到我读到这绝对是一个有价值的提示:
ObjectiveC.NSString.__conversion (ObjectiveC.NSString)() -> Swift.String
会不会是 iOS8 的错误? 你们中有人遇到过这个问题和/或知道如何解决吗?
【问题讨论】:
-
FWIW with ObjC 我也在 iOS8.1 下得到空值。在 iOS7 下,相同的代码可以正常工作。从Mail iOS7下的sourceApplication是“com.apple.mobilemail”。现在它为空。
标签: ios swift appdelegate ios8 openurl