gpt4 book ai didi

ios - Swift 通过测试用例访问应用程序委托(delegate)引发 swift_dynamiccast 无条件异常

转载 作者:可可西里 更新时间:2023-11-01 00:53:30 28 4
gpt4 key购买 nike

在应用程序中的一种方法中从测试用例访问应用程序委托(delegate)时,我收到 swift_dynamiccast 无条件异常。

应用中的函数是这样的:

func sampleMethod()
{
var appdelegate:AppDelegate = UIApplication.sharedApplication().delegate! as AppDelegate
}

测试用例正在访问此方法:

func testStart()
{
var sample:MyClass = MyClass()
sample.sampleMethod()
}

它在方法 sampleMethod() 中引发异常,然后继续。我在构建阶段的测试用例项目中添加了 MyClass 和 AppDelegate 文件。

有什么建议吗?一个类似的悬而未决的问题 here.

最佳答案

这是因为测试情况下的 AppDelegate 对象与主项目 AppDelegate 的类型不同。因此,您的应用程序崩溃了

class MyClass: NSObject {

func someMethod() {
var checkObject:AnyObject = UIApplication.sharedApplication().delegate!;
NSLog("%@", checkObject.description);
var appdelegate:AppDelegate = AppDelegate();
NSLog("%@", appdelegate);
}

}

你可以在控制台看到这个函数的结果:

2015-01-14 13:03:58.299 TestSwift[654:282510] <TestSwift.AppDelegate: 0x17007b940>
2015-01-14 13:04:01.085 TestSwift[654:282510] <TestSwiftTests.AppDelegate: 0x17467f740>

可能的解决方案:使用 AnyObject 变量而不是转换为 AppDelegate

关于ios - Swift 通过测试用例访问应用程序委托(delegate)引发 swift_dynamiccast 无条件异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com