[英]iOS error casting Object in Swift which inherited from an Obj-C Class
我们在从Swift类中的Objective C类继承时发现了我们项目中的一个问题
ViewController.m
@implementation ViewController
+ (ViewController*) getObj {
ViewController *obj = [[SwiftController alloc] init];
return obj;
}
SwiftController.swift
class SwiftController: ViewController { }
测试代码时,以下测试失败
class Test: XCTestCase {
func testFails() {
let obj = ViewController.getObj()
XCTAssertTrue(obj is SwiftController)
}
}
在swift中实现相同的行为只能正常工作。
class FirstController { }
class SecondController: FirstController {
static func getObj() -> FirstController {
let obj: FirstController = SecondController()
return obj
}
}
func testOk() {
let obj = SecondController.getObj()
XCTAssertTrue(obj is SecondController)
}
这是一个swift / obj-c错误还是有人有这种行为的解决方案?
可以在github上找到此示例项目的副本: https : //github.com/edgeftq/inheritanceTest.git
干杯,艾迪
问题是+[ViewController getObj]
返回一个类型为的对象:
InheritanceTest.SwiftController
您的单元测试将其与课程进行比较
InheritanceTestTests.SwiftController
这两个班级不同。
删除SwiftController.swift
从单元测试目标会员,再加入@testable import InheritanceTest
在顶部Test.swift
。
这将使您的单元测试访问ViewController.m
使用的相同SwiftController
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.