在Swift中使用String和NSString检查类型

时间:2015-02-12 04:01:51

标签: string swift nsstring typechecking

在Swift文档中,它说

  

使用类型检查运算符(is)检查实例是否属于某个子类类型。如果实例属于该子类类型,则类型检查运算符返回true,否则返回false。

代码如下:

// Playground - noun: a place where people can play

import Foundation

var aString = ""
var bString = aString
aString == bString
//true
//aString === bString
//error: type 'String' does not conform to protocol 'AnyObject'
var aObject:AnyObject = aString as AnyObject
var bObject:AnyObject = bString as AnyObject
aObject === bObject
//false
//aString is NSString
//error: 'NSString' is not a subtype of 'String'

var aNSString = NSString()
var bNSString = aNSString
aNSString == bNSString
//true
aNSString === bNSString
//true
//aNSString is NSString
//always true
//aNSString is String
//always true

NSString实例被视为String类型。但是,String类型是值类型,NSString类型是引用类型。此外,String类型不符合AnyObject,NSString是。

那么为什么在类型检查中将NSString实例视为String类型?

0 个答案:

没有答案