Swift2的更改
What’s New in Swift
错误处理-Error Handle由原来的error 改成try-catch 或者throws var reg :NSRegularExpression! = NSRegularExpression(pattern: pattern,options: NSRegularExpressionOptions.CaseInsensitive,error: &error)
swift2改成try-catch 或throws。如下 do{
let reg :NSRegularExpression! = try NSRegularExpression(pattern: pattern,options: NSRegularExpressionOptions.CaseInsensitive)
let resultCheck : NSTextCheckingResult! = reg.firstMatchInString(telNum!,options: NSMatchingOptions(),range: NSMakeRange(0,Int(telNum!)!))
if resultCheck != nil {
flag = true
}
} catch {
flag = false
}
}
个人感觉仿佛又回到了大学时学java的时候了。。。 语法改进引入关键词 func processPerson(json: AnyObject) -> Either<Person,String> {
guard let name = json["name"] as? String {
throw DataError.MissingName
}
guard let year = json["year"] as? Int {
throw DataError.MissingYear
}
return .First(Person(name,year))
}
关于选项集之前是以“|”分割即位运算的方式 arrowImage.autoresizingMask = UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin
swift2改成[,]。如下 arrowImage.autoresizingMask = [UIViewAutoresizing.FlexibleLeftMargin,UIViewAutoresizing.FlexibleRightMargin]
个人比较喜欢swift2的这种表达方式,赞 Availability~可用性比如layoutMargins在iOS8出现可用, if cell.respondsToSelector("setLayoutMargins:") {
cell.layoutMargins = UIEdgeInsetsZero
}
swift2带来这种可用性使用方法#available,就不用自己写方法判断了,赞 if #available(iOS 8.0,*) {
cell.layoutMargins = UIEdgeInsetsZero
} else {
// Fallback on earlier versions
}
另外一种就是一个方法或一个类中含有一个高版本的实力变量 @available(iOS 8.0,OSX 10.10,*)
func startUserActivity() -> NSUserActivity {
//
}
比如我在一个类中含有UIAlertController类型的变量,那么在类外面就要加上 @available(iOS 8.0,*)
字符串-Strings & Characters之前计算字符串的长度 count(str)
现在改成 str.characters.count
个人认为:String类型不再遵循SequenceType,可以使用.characters,.utf8和.utf16对应字符集的运算。 枚举
enum Either<T1,T2> {
case First(T1)
case Second(T2)
}
或
enum Either<T1,T2> {
case First(T1),Second(T2)
}
enum Tree<T> {
case Leaf(T)
case Node(Tree,Tree)
}
CFunctionPointer U> 类型被移除CFunctionPointer U> 类型被移除,C函数现在使用新的@convention(c)属性声明,和其他函数类型一样,@convention(c) T->U是一个非空的除非是它是可选的。@objc_block属性由@convention(block)取代。 var (a : Int,b : Float) = foo()
现在重构为 var (a,b) : (Int,Float) = foo()
其它do/while循环被改为repeat/while。即var i = 0
repeat {
i++
print(i)
}while(i < 10)
i = 0
// do{
// i++
// print("do-while (i)")
// }while(i < 10)
打印语句
Swift的文档注释现在基于Markdown语法。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |