swift 中用的最多的就是?(Optional)类型,swift是一个注重类型安全的语言,一个类的属性必须要有默认的值,下面有个swift 和oc的例子,展示在类型安全方面的差异
oc代码
-(void)test
{
NSString *url = [self getUrlWithCompany:@"baidu"];
NSDictionary *dict = @{@"url":url};
}
-(NSString *)getUrlWithCompany:(NSString *)company
{
if([company isEqualToString:@"apple"]){
return @"www.apple.com";
}else if ([company isEqualToString:@"google"]){
return @"www.google.com";
}else{
return nil;
}
}
这时候当返回值是nil的时候,直接就会闪退
swift代码,可以给变量设置一个默认值
var url: String?
print((url ?? "www.baidu.com"))
func getUrlWith(company: String) -> String? {
if(company == "apple"){
return "www.apple.com"
}else{
return nil
}
}
这时候会有警告,提醒有可能会有nil的情况
Optional其实是一个枚举类型,值是Optional.None和Optional.Some
var url: String?
//强制解包,如果为nil,程序就会崩溃
print(url!)
网友评论