【问题标题】:Adding content of NSArray to Swift Array将 NSArray 的内容添加到 Swift Array
【发布时间】:2014-09-25 15:24:29
【问题描述】:

我在我的应用程序中同时使用了 swift 和 Objective-c。

var newArray = [CustomClass]()
newArray += oldClass.arrayOfCustomClass

这会导致错误:

'[(CustomClass)]' is not identical to 'CGFloat'

有什么帮助吗? 谢谢 雷扎

【问题讨论】:

  • 显示其余的实际代码! oldClass 是什么? arrayOfCustomClass 是什么?

标签: objective-c swift


【解决方案1】:

问题在于 Swift 对 NSArray 中的内容一无所知。您必须将 NSArray 显式转换为 [CustomClass](最好不要撒谎,否则会在运行时崩溃)。

【讨论】:

  • 但是这里可能还有其他问题,直到您揭示arrayOfCustomClass 的真正含义后才能知道。
  • 正如我在下面的回答所示,我需要先转换为 AnyObject,然后才能转换为 CustomClass
  • 这可以通过可选演员安全地完成 - 请参阅我的答案。
  • @reza23 您仍然没有按照我的要求显示您的 Objective-C 代码,因此您需要强制转换为 AnyObject。这里有一些东西你需要解决,但你拒绝展示它是什么。
【解决方案2】:

似乎有效的是:

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass]

【讨论】:

    【解决方案3】:

    要安全地执行此操作,您只需尝试可选演员表。如果您认为 NSArray 仅包含 CustomClass 类型的元素,您可以这样做:

    var newArray = [CustomClass]()
    if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] {
        newArray += customArray
    }
    

    如果你想提取CustomClass 元素(我知道与你问的有点不同),这是这样的:

    var newArray = [CustomClass]()
    for element: AnyObject in oldClass.arrayOfCustomClass {
        if let custom = element as? CustomClass {
            newArray.append(custom)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 2016-01-19
      相关资源
      最近更新 更多