将Enum中的静态Swift数组转换为NSArray时出错

格奥尔格

据我了解,如果需要的话Arrayin Swift将自动转换为NSArray

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html在该帐户上说

当您从NSArray对象桥接到Swift数组时,结果数组的类型为AnyObject []。如果对象是Objective-C或Swift类的实例,或者该对象可以桥接到一个对象,则该对象是AnyObject兼容的。您可以将任何NSArray对象桥接到Swift数组,因为所有Objective-C对象都是AnyObject兼容的。由于所有NSArray对象都可以桥接到Swift数组,因此Swift编译器在导入Objective-C API时将NSArray类替换为AnyObject []。

Auszug aus:Apple Inc.“将Swift与Cocoa和Objective-C结合使用。” iBooks。https://itunes.apple.com/de/book/using-swift-cocoa-objective/id888894773?mt=11

在我的游乐场中,以下操作失败

[位置]无法转换为“ NSArray”

import Foundation

enum Position : String {
    case TopLeft = "Top Left", TopCenter = "Top Center", TopRight = "Top Right", BottomLeft = "Bottom Left", BottomCenter = "Bottom Center", BottomRight = "Bottom Right"
    // pattern to iterate enums by http://www.swift-studies.com/blog/2014/6/10/enumerating-enums-in-swift
    static let allValues : [Position] = [TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight]
}

let a : NSArray = Position.allValues

据我所知,Position.allValues是有效的Array,尽管是静态的。我想念什么还是有人可以帮忙吗?谢谢。

马特

问题是那allValuesPosition的数组但是Position是一个枚举,Swift枚举无法越过通往Objective-C的桥梁。

因此,是的,[Int]或者[String]将神奇地过桥而成为NSArray,但不是[Position]-错误消息告诉您的内容。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift-如何将Swift数组转换为NSArray?

来自分类Dev

将Range转换为数组时出错

来自分类Dev

将[Int64]的Swift数组转换为NSArray

来自分类Dev

将NSArray转换为在Objective-C或Swift中按频率排序的唯一值数组

来自分类Dev

Swift-使用NSKeyedArchiver保存用户数据,转换为NSArray时出错

来自分类Dev

尝试将列表转换为数组时出错[]

来自分类Dev

将张量转换为numpy数组时出错

来自分类Dev

将数据从CSV转换为numpy数组时出错

来自分类Dev

将String转换为Char数组时出错

来自分类Dev

将JSON转换为数组PHP时出错

来自分类Dev

将NSArray转换为Swift Array <T>

来自分类Dev

将NSData ObjectiveC代码转换为Swift时出错

来自分类Dev

将NSData ObjectiveC代码转换为Swift时出错

来自分类Dev

swift中的filterUsingPredicate给出错误“无效无法转换为NSArray”

来自分类Dev

将静态数组转换为Delphi中的指针?

来自分类Dev

Swift解析JSON时遇到麻烦:无法将类型'__NSCFDictionary'的值强制转换为'NSArray'错误

来自分类Dev

将动态数组转换为静态

来自分类Dev

将动态数组转换为静态

来自分类Dev

将Int数组转换为Enum标志

来自分类Dev

将float转换为datetime时出错

来自分类Dev

将DICOM转换为JPEG时出错

来自分类Dev

将double转换为int时出错

来自分类Dev

将Object []转换为byte []时出错

来自分类Dev

将float转换为datatime时出错

来自分类Dev

将varchar转换为datetime时出错

来自分类Dev

将jpg转换为pdf时出错

来自分类Dev

将jpg转换为pdf时出错

来自分类Dev

将double转换为BigInteger时出错

来自分类Dev

将kml转换为geojson时出错