//
// ViewController.swift
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let company = companyName(companyName: "houston")
// let newCompany = "i am working at " + company!
if let tempString = company {
let newCompany = "i am working at " + tempString
print(newCompany)
}
}
func companyName(companyName:String) -> String? {
if companyName == "newYork" {
return "newYork"
}
return nil
}
}
/*
OC下面代碼,可以編譯通過,但是運作時會出錯!因為company是空的。
- (void)viewDidLoad {
[super viewDidLoad];
NSString * companyName = [self returnCompanyName:@"facebook"];
NSString * myString = @"i am working in";
NSString * message = [myString stringByAppendingString:companyName];
}
- (NSString*)returnCompanyName:(NSString*)companyName
{
if ([companyName isEqualToString:@"google"]) {
return @"google";
} else if ([companyName isEqualToString:@"apple"]){
return @"apple";
}
return nil;
}
swift中的可選型對象
Swift語言設計的時候有很多安全方面的考慮,可選型表示了Swift是一門類型安全的語言,從上面的例子中你可以看到Swift中的可選型會在編譯時就去檢查某些可能發生在運作時的錯誤。
上面舉例說明,Swift比OC安全
❤️String? 可選型類型,而不是string類型
文法糖:表示可能為string類型,可能為nil
let hasValue = company?.hashValue
hasValue就是company拆包後的值(nil或者bool)
❗️❤️var name:String! : 類中的屬性
在Swift中類在初始化的時候它的屬性必須都被初始化。
如果你不想設定某個屬性的預設值的話,使用?把它加入可選鍊中
❗️拆包
()強制拆包,确信可選型有值的情況下
let newCompany = "i am working at " + company!
()if - let結構的可選綁定來判斷一個變量是不是空值,進行拆包。
if let tempString = company {
let newCompany = "i am working at " + tempString
print(newCompany)
}
*/