为什么我可以有一个[AnyObject]数组并在其中放入一堆不同大小的类型...
var a = [AnyObject]()
a.append(Int(1))
a.append(Float64(3.14))
a.append(Bool(true))
Run Code Online (Sandbox Code Playgroud)
...除了Int32和Int64....
a.append(Int32(1)) // err: type 'Int32' does not conform to protocol 'AnyObject'
a.append(Int64(1)) // err: type 'Int64' does not conform to protocol 'AnyObject'
Run Code Online (Sandbox Code Playgroud)
文档AnyObject说:
"AnyObject可以表示任何类类型的实例"
但是当我命令点击Int,Int32或者Int64看到这些类型的标准库定义时,我发现它们都是struct值.
这里的根本问题是什么?为什么这样设计?
我像这样定义我的字典:
var teamsData = Dictionary<String,Dictionary<String,Int64>>()
Run Code Online (Sandbox Code Playgroud)
然后,我试图将其存储在userdefaults中:
NSUserDefaults.standardUserDefaults().setObject(teamsData, forKey: "teamsData")
Run Code Online (Sandbox Code Playgroud)
但它会抛出错误:
Type Dictionary<String,Dictionary<String,Int64>> does not conform to protocol 'Any Object'
Run Code Online (Sandbox Code Playgroud) NSNumber引用类型,例如Int32,UInt32,Int64和UInt64类型?具体来说,复制下面介绍的自动按配置桥接.此类解决方案的示例用法:
let foo : Int64 = 42
let bar : NSNumber = foo
/* Currently, as expected, error:
cannot convert value of type 'Int64' to specified type 'NSNumber */
Run Code Online (Sandbox Code Playgroud)
一些原生的Swift数(值)类型可以自动桥接到NSNumber(引用)类型:
迅数字结构类型的实例,例如
Int,UInt,Float,Double,和Bool,不能由来表示AnyObject类型,因为AnyObject仅代表一个类类型的实例.但是,Foundation启用桥接时,可以将Swift数值分配给常量和AnyObject类型的变量 作为类的桥接实例NSNumber....
雨燕自动填补某些本地号码类型,如
Int和Float,对NSNumber.此桥接允许您NSNumber从以下类型之一创建 : …
我想斯威夫特的数组转换Int64成NSArray与NSNumber价值观.
@interface A : NSObject
- (void)bar:(NSArray *)tips;
@end
Run Code Online (Sandbox Code Playgroud)
Swift类继承了这个Objective-C类:
class B : A {
func foo(tips : [Int64]) {
self.bar(tips)
}
}
Run Code Online (Sandbox Code Playgroud)
Swift代码无法编译时出现以下错误:
Type '[Int64]' does not conform to protocol 'AnyObject'
Run Code Online (Sandbox Code Playgroud)
我怎么能转换[Int64]成NSArray与NSNumber实例?
PS我尝试了很多东西,找不到一个简单的方法来做到这一点:
self.bar(NSArray(array: tips))
self.bar(tips as NSArray)
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题涉及不涉及试图建立新NSArray的独立的Int64对象,但现有的数组转换[Int64]成NSArray
swift ×4
arrays ×1
dictionary ×1
interop ×1
ios ×1
nsnumber ×1
objective-c ×1
swift2 ×1
xcode ×1