swift中元组,可选类型,断言,字符串,字符串的截取,数组与字典的使用
昨天写了关于swift中的一点知识,毕竟是第一天开始学习,感觉有点凌乱。今天写点swift 4.0的东西,这才慢慢入门,懂了一些技巧,现在说下,swift中每个版本中xcode中的语法都不太一样,看书和看视频都介绍的是swift 4.0的语法,然而我的xcode中是3.0或者4.0.于是看着2.0的视频学习4.0,哪里的语法不一样就去官网看文档,重新修正。顺便发下4.0的连接—请点击
元组的使用
//元组的使用
func tupleDemo(){
let returnResult=("404","网页无发现")
let http404Erroe=returnResult
print("返回代码为\(http404Erroe.0)--返回结果为\(http404Erroe.1)")
let(justTheStautsCode,_)=returnResult
print(justTheStautsCode)
}
可选类型
//可选类型
func optionType(){
print("=============================swift 4.0============================")
let possibleNumber="123"
//因为构造函数有可能初始化失败,所以返回为可选类型
let convertedNumber = Int(possibleNumber)
//先用来判断是否存在值
if convertedNumber != nil {
//一旦确定存在值,则使用!来解包
print("concertedNumber的值为\(convertedNumber!)")
}
//可选绑定:可以使用可选绑定来确定可选类型是否包含值
if let actualNumber=Int(possibleNumber) {
print("\(possibleNumber)的整数是\(actualNumber)")
}else{
print("\(possibleNumber)无法转换为Int类型")
}
if let firstNumber=Int("4"),let secondNumber=Int("42"),firstNumber<secondNumber && secondNumber<100{
print("\(firstNumber)<\(secondNumber)<100")
}
//隐式解包可选类型
let possibleString:String? = "Any optionan string."
let forceString:String = possibleString!
let assumeString:String!="An implicatly unwarpping optional string."
let implicatString:String=assumeString
if assumeString != nil{
print(assumeString)
}
if let definiteString = assumeString {
print(definiteString)
}
}
断言
//错误处理
func doWithError(){
//断言和先决条件
let age = -3
//当为true时候继续执行,false时候执行后面的语句,并且终止程序运行
assert(age<0,"A person's age can't be less than zero")
}
字符串
//字符串
func doWithString(){
/*
字符串
swift中是String类型
结构体,量级更轻,推荐使用
OC是继承NSString类型
继承自NSObject的对象
*/
let str="HELLO WORLD"
for c in str {
print(c)
print(str.count)//打印字符串的长度
}
//时间的格式化
let h=8
let m=3
let s=4
let dateString=String(format:"%02d:%02d:%02d",arguments:[h,m,s])
print(dateString)
let dateString2=String(format:"%02d:%02d:%02d",h,m,s)
print(dateString2)
}
字符串的截取
//字符串的截取
func subString(){
let greeting = "Hello, world!"
//index返回第一次字符串线的下标,下标是否为空若不为nil则将下标解包后返回,否则,去greeting.endIndex的值
let index = greeting.index(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]//半开范围操作符,取0到index的字符给beginning
print("beginning的值为\(beginning)")
//半开范围操作符的使用
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count//不包括最后一个
print("count的值为\(count)")
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
//原生态的截取字符串,不包含结尾的内容还是很方便的
let str = "Hello, world!"
let i = str.index(str.startIndex, offsetBy: 4)
str[i] // 返回字符 'o'
let e = str.index(str.endIndex, offsetBy:-2)
str[i ..< e] // 返回 字符串 "o, worl"
}
数组
//数组
func arrayDemo(){
/*
swift中有一个AnyObject,表示任意对象
OC中所有对象都继承自NSObject
swift中的对象,可以没有任何对象
*/
var array:[AnyObject]=["zhangsan" as AnyObject,"list" as AnyObject]
array.append("wangwu" as AnyObject)
array.append(34 as AnyObject)//会自动扩容1,2,4,8,16会成倍增加
print(array)
//遍历
for s in array {
print(s)
}
//数组的删,改
array[0]="dfhdj" as AnyObject
print(array)
array.removeFirst()
array.remove(at: 1)
print(array)
var arrayMutable:[String]//mutablearray,定义数组并没有分配空间
arrayMutable=[String]()//分配空间
arrayMutable.append("张三")
// 数组的初始化方式
// 1.定义->初始化
// var array:[String]
// array=[String]()
// 2.
// var array=[String]()
// array.append("12")
//数组的合并
var a:[String]=["张","sdsd"]
var b:[String]=["sdsd","www"]
var c:[String]=["小李子",String(12)]
a+=b
c+=a
print(a)
print(c)
}
字典的定义和json
func dictionAndJson(){
var dict=["name":"小花","age":10] as [String : Any]
//如果key存在则覆盖
dict["name"]="小草"
//如果key不存在,新增
dict["title"]="老发"
print(dict)
//字典的遍历
for (k,v) in dict {
print("key \(k)--value \(v)");
}
}