我想要一种方法来判断一个变量是一个Foundation对象或C变量在Swift。就像Nsstring vs String,或者NSArray vs array。所以我可以在控制台中注销它,看看它是什么。
例如,我想知道下面第一个数组推断的类型:
var array = [1,2,3] // by default NSArray or array?var array:[Int] = [1,3]var array:NSArray = [1,3]var array:Array<Any> = [1,3]
我已经看到了答案,判断一个给定的变量是一种给定类型在this question,但我会说,这是非常不同于我想要的。
您可以使用.dynamicType属性获取对值的类型对象的引用。这相当于Python的type()函数,并且提到了 in the Swift documentation under Language Reference: Types: Metatype Type。var intArray = [1,3]let typeOfArray = intArray.dynamicType
使用此类型对象,我们可以创建相同数组类型的新实例。
var newArray = typeOfArray()newArray.append(5)newArray.append(6)println(newArray)
[5,6]
我们可以看到,这个新的值是相同的类型([Int])通过尝试附加一个float:
newArray.append(1.5)
error: type 'Int' does not conform to protocol 'floatliteralConvertible'
如果我们导入Cocoa并使用混合类型的数组文本,我们可以看到创建了一个NSArray:
import Cocoavar mixedArray = [1,"2"]let mixedArrayType = mixedArray.dynamicTypevar newArray = mixedArrayType()var mutableArray = newArray.mutablecopy() as NSMutableArraymutableArray.addobject(1)mutableArray.addobject(1.5)mutableArray.addobject("2")println(mutableArray)
(1,"1.5",2)
但是,在这一点上似乎没有任何一般的方式来生成一个类型对象的字符串描述,所以这可能不服务于你问的调试角色。
从NSObject派生的类型有一个.description()方法,如使用in SiLo’s answer,
println(mixedArrayType.description())
__NSArrayI
但是,这不是存在于类型,如Swift的内置数组。
println(typeOfArray.description())
error: '[Int].Type' does not have a member named 'description'总结
以上是内存溢出为你收集整理的如何确定Swift中变量的类型全部内容,希望文章能够帮你解决如何确定Swift中变量的类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)