[iOS]-Swift使用易错点整理(持续更新)
2017-02-17 12:26
435 查看
今天想整理一下之前在使用Swift3.0的过程中踩过的坑,记录下来以便以后翻阅起来更方便。
1、方法签名
Swift3.0 方法的签名写法,类似OC的选择器
#selector(函数名(参数名:…))
多个参数的情况:后面一直跟着写出。
demo:
2、类型转换:
// 判断一个对象是否是某个类型,OC:isKindOfClass Swift:is
// 判断是否可以类型转换:OC:isMemberOfClass Swift:as? 和 as!
// 可选形式 as? 返回一个你试图下转成的类型的可选值(optional value)。// 强制形式 as 把试图向下转型和强制解包(force-unwraps),两个操作同时进行
// 看下面的栗子:parseBaseData
3、异常及捕获
看下面demo
===================20160316补充=================
4、获取对象的类型
/* 获取对象的类型: type(of:)
* 注意:dynamicType已经废弃
* 相当于OC中的class 实例方法 []
* object = [[SomeClass alloc] init];
* [object class]; 对象名:class 获取object的类型
*/
1、方法签名
Swift3.0 方法的签名写法,类似OC的选择器
#selector(函数名(参数名:…))
多个参数的情况:后面一直跟着写出。
demo:
mport UIKit class CallFunctioin: NSObject { var tap1:UITapGestureRecognizer? var tap2:UISwipeGestureRecognizer? func callFun() { tap1 = UITapGestureRecognizer(target: self, action: #selector(fun1(str:))) tap2 = UISwipeGestureRecognizer(target: self, action: #selector(fun2(str1:str2:))) } func fun1(str:String) -> Void { print("fun1") } func fun2(str1:String, str2:String) -> Void { print("fun2") }
2、类型转换:
// 判断一个对象是否是某个类型,OC:isKindOfClass Swift:is
// 判断是否可以类型转换:OC:isMemberOfClass Swift:as? 和 as!
// 可选形式 as? 返回一个你试图下转成的类型的可选值(optional value)。// 强制形式 as 把试图向下转型和强制解包(force-unwraps),两个操作同时进行
// 看下面的栗子:parseBaseData
func parseBaseData(allData:[[String:AnyObject]]) { // 基本账户临时字典 var tempBaseDic = [String:AnyObject]() // 绑卡列表临时数组 var tempBankArr = [[String:AnyObject]]() if allData.count > 0 { for index in 0..<allData.count { var passdic = [String:AnyObject]() // 获取下挂类型 let recTypeDic = allData[index] let recType = recTypeDic["recType"] as? String if !(recType?.isEmpty)! { if recType == "03" { // 基本账户 tempBaseDic = allData[index] self.base_list?.add(tempBaseDic) } else if recType == "01" { // 绑卡列表 passdic["image"] = "yinhang_kaban" as AnyObject? // 根据银行名称取银行名称和Logo let bankNameDic = self.list?[index] let bankName = bankNameDic?["bankName"] as? String var bankNameLogo:String = "" bankNameLogo = JDUtils.getIconName(byBankName: bankName!) passdic["bankLogo"] = bankNameLogo as AnyObject? // 银行名称 passdic["bankName"] = bankName as AnyObject? // 卡类别 passdic["type"] = "index_05" as AnyObject? // 卡号 let cardNumber = allData[index]["accountNo"] passdic["cardNo"] = cardNumber // 银行卡类别:储蓄卡或信用卡 let b = allData[index]["accountType"] var accountType:String = "" if (b != nil) { accountType = (allData[index]["accountType"] as? String)! } else { accountType = "10" } passdic["accountType"] = accountType as AnyObject? // 余额 var availBalance = "¥0.00元" let avi = allData[index]["availBalance"] if (avi != nil) { var tempAvailBalance = allData[index]["availBalance"] as? String if tempAvailBalance == nil { tempAvailBalance = "0.00" } availBalance = "¥" + tempAvailBalance! + "元" } passdic["availBalance"] = availBalance as AnyObject? // 添加到绑卡列表临时数组 tempBankArr.append(passdic) } } } }
3、异常及捕获
看下面demo
// 捕获和处理错误 let fileManager = FileManager.default let url = NSURL.fileURL(withPath: "/path/to/file") // 直接这样写报错:call can throw,but it is not marked with 'try' and the error is not handled // fileManager.removeItem(at: url) // 可以这样写:使用do catch捕获异常 do { try fileManager.removeItem(at: url) } catch let error as NSError { print("error:\(error.domain)") }
===================20160316补充=================
4、获取对象的类型
/* 获取对象的类型: type(of:)
* 注意:dynamicType已经废弃
* 相当于OC中的class 实例方法 []
* object = [[SomeClass alloc] init];
* [object class]; 对象名:class 获取object的类型
*/
let string = 1 let name = type(of: string) print(name)
相关文章推荐
- Unity+NGUI使用时一些要注意的事整理(持续更新)
- IOS Socket使用 -持续更新
- ios 常见错误整理 持续更新
- Android中使用到的——UtilToos收集整理(持续更新)
- iOS swift sqlite使用,上传及定时更新
- IOS Socket使用大全 -将持续更新
- iOS开发网络资源整理-持续更新
- iOS开发面试题整理(持续更新)
- iOS常用的宏(整理)--持续更新
- html table在使用中一些要点整理(持续更新)
- IOS Socket使用大全 -将持续更新
- IOS自动布局整理-持续更新
- ios 常见错误整理 持续更新
- ios 常见错误整理 持续更新
- ios 常见错误整理 持续更新
- IOS Socket使用大全 -将持续更新
- iOS - Useful Tips (原创整理,持续更新)
- IOS项目中可以使用到的类库---持续更新
- iOS 开发学习资料整理(持续更新)
- IOS开发--常用工具类收集整理(Objective-C)(持续更新)