iOS错误转换从Obj-C类继承的Swift中的对象

埃迪·G

从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)
        }
    }

快速实现相同的行为只能正常工作。

    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

这将使您的单元测试可以访问所使用的相同SwiftController访问权限ViewController.m

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Obj-c iOS应用程序转换为Swift时出现链接器错误

来自分类Dev

将Obj-c iOS应用程序转换为Swift时的链接器错误

来自分类Dev

将Obj-c iOS应用程序转换为Swift时的链接器错误

来自分类Dev

Swift:将数据解码为继承类的对象出现错误

来自分类Dev

C ++中的类继承和转换

来自分类Dev

继承初始化类中的Swift错误

来自分类Dev

从C#中的继承类转换数据类型

来自分类Dev

类继承,但在C ++中遇到重定义错误

来自分类Dev

C ++类继承分段错误

来自分类Dev

Swift(iOS)中的“'CGFloat'无法转换为'Double'”错误

来自分类Dev

Swift(iOS)中的“'CGFloat'无法转换为'Double'”错误

来自分类Dev

iOS-在Watch Extension中添加Obj-C文件导致错误

来自分类Dev

iOS Obj-C挂钩将十六进制转换为字符串

来自分类Dev

从Objective C中的Swift类继承

来自分类Dev

obj-c类中的未知swift属性

来自分类Dev

将代码从swift转换为obj c

来自分类Dev

从obj-c转换为swift

来自分类Dev

iOS Swift错误:“ T”不可转换为“ MirrorDisposition”

来自分类Dev

覆盖最初在Obj-c超类中定义的swift类中的属性

来自分类Dev

对对象的引用返回null(iOS类继承)

来自分类Dev

将Obj C项目转换为Swift时访问类的函数时出错

来自分类Dev

Swift:从类错误UIViewController和UIIMagePickerController的多重继承

来自分类Dev

3解析错误obj c

来自分类Dev

类中的继承。C ++

来自分类Dev

在Obj C中捕获React Native错误

来自分类Dev

C ++多重继承,与派生对象中基类的地址混淆

来自分类Dev

UInt8在iOS Swift中无法转换为CGFloat错误

来自分类Dev

APPDelegate中的openURL转换错误NSString-> String(Swift和iOS8)

来自分类Dev

iOS10 / Swift 3中的NSFetchedResultsController-转换后仍然出现错误消息

Related 相关文章

  1. 1

    将Obj-c iOS应用程序转换为Swift时出现链接器错误

  2. 2

    将Obj-c iOS应用程序转换为Swift时的链接器错误

  3. 3

    将Obj-c iOS应用程序转换为Swift时的链接器错误

  4. 4

    Swift:将数据解码为继承类的对象出现错误

  5. 5

    C ++中的类继承和转换

  6. 6

    继承初始化类中的Swift错误

  7. 7

    从C#中的继承类转换数据类型

  8. 8

    类继承,但在C ++中遇到重定义错误

  9. 9

    C ++类继承分段错误

  10. 10

    Swift(iOS)中的“'CGFloat'无法转换为'Double'”错误

  11. 11

    Swift(iOS)中的“'CGFloat'无法转换为'Double'”错误

  12. 12

    iOS-在Watch Extension中添加Obj-C文件导致错误

  13. 13

    iOS Obj-C挂钩将十六进制转换为字符串

  14. 14

    从Objective C中的Swift类继承

  15. 15

    obj-c类中的未知swift属性

  16. 16

    将代码从swift转换为obj c

  17. 17

    从obj-c转换为swift

  18. 18

    iOS Swift错误:“ T”不可转换为“ MirrorDisposition”

  19. 19

    覆盖最初在Obj-c超类中定义的swift类中的属性

  20. 20

    对对象的引用返回null(iOS类继承)

  21. 21

    将Obj C项目转换为Swift时访问类的函数时出错

  22. 22

    Swift:从类错误UIViewController和UIIMagePickerController的多重继承

  23. 23

    3解析错误obj c

  24. 24

    类中的继承。C ++

  25. 25

    在Obj C中捕获React Native错误

  26. 26

    C ++多重继承,与派生对象中基类的地址混淆

  27. 27

    UInt8在iOS Swift中无法转换为CGFloat错误

  28. 28

    APPDelegate中的openURL转换错误NSString-> String(Swift和iOS8)

  29. 29

    iOS10 / Swift 3中的NSFetchedResultsController-转换后仍然出现错误消息

热门标签

归档