gpt4 book ai didi

ios - 需要将 NSArray 的元素转换为 Swift 类

转载 作者:行者123 更新时间:2023-11-28 09:07:48 26 4
gpt4 key购买 nike

我有一个包含两个不同类的 NSArray,其中一个在 Swift (ClassS) 中,另一个在 Objective-C (ClassO) 中。下面是它的内部结构示例:

NSArray *allObjects=@[classOObject,classSObject,classOObject,classSObject,etc.];

在 Swift 单元测试文件中,我循环遍历此数组并仅对 ClassS 对象进行一些测试。

for thisObject in allObjects{
if thisObject is ClassS{
// do stuff
}
}

thisObject is ClassS 表达式的计算结果始终为 false;为什么会这样?如果我将 if 语句替换为 if thisObject is ClassO,那么它就可以很好地检测 ClassO 对象。

其他一些可能相关或不相关的要点:

  • 在 XCode 的变量 View 中,thisObject 的类对于 ClassO 对象是 ClassO_ClassO_ *,但对于 ClassS 对象是 MyApp.ClassS_ClassS_ *。
  • 在变量 View 中,数组的类名是[AnyObject]!
  • ClassS 和 ClassO 都继承自同一个 Objective C 父类(super class),它本身是 NSManagedObject 的子类。
  • MyAppTests-Bridging-Header.h 将 ClassO.h 和公共(public)父类(super class)导入到 ClassO.h 和 ClassS.h
  • if thisObject is ClassS 替换为 if let castedObject = thisObject as? ClassSthisObject.isKindOfClass(ClassS) 无效

感谢阅读,任何想法都会很棒。

最佳答案

您是否尝试过使用 if let

for thisObject in allObjects{
if let thisObject = thisObject as? ClassS {
// do stuff
} else if let thisObject = thisObject as? ClassO {
// do stuff
} else {

}
}

关于ios - 需要将 NSArray 的元素转换为 Swift 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325509/

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