您的位置:首页 > 移动开发 > Swift

Swift实战总结1

2018-02-27 22:58 204 查看
1.guard语句:

功能与if语句相同:基于一个表达式的布尔值去判断一段代码是否该被执行。与if不同的是:guard语句只有在条件不满足的时候才会执行这段代码,多用在可选绑定。如下例:

func fooGuard(x: Int?) {
guard let x = x where x > 0 else {//where语句是对表达式加上一个约束
// 变量不符合条件判断时,执行下面代码
return
}
x.description
}

如果条件(x>0)不符合,guard的else语句就运行,从而退出这个函数,如果通过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 - 这个例子中该范围是fooGuard函数内部。

2.@objc:修饰后的类型可以直接供 Objective-C 调用。

@IBAction/@IBOutlet:修饰的变量与函数表示与xib文件或者storyboard关联。

lazy:只能修饰var,修饰后的变量只有在第一次使用后才会初始化,而不是像普通var变量在大类初始化时跟着初始化。

wear/strong/unowned:与对象的自动引用计数有关。

Outlet/Outlet Collection/Action:修饰控件,Outlet修饰的控件以定义变量的方式将控件链接到代码,该变量代表控件;Action修饰的控件以定义方法的方式将控件链接到代码,该方法在用户与控件进行交互时运行。

3.在使用view.addSubview添加UIView时,视图按照加入的顺序覆盖。

4.在设置Segue时show是将新的视图控件push到视图堆栈的顶端予以显示,然后通过按键pop返回上一视图,所以会有系统自带的反回按键,show detail 是用新的视图替换原始图,所以没有返回按钮也无法返回。present
modally是使用模态展示,弹窗上的交互没有结束前是不能操作主页的。

5.as的使用场合:(1)从派生类转换成基类:let animal = cat as Animal

(2)数值转换:let number = 42 as CGFloat

(3)switch语句中进行模式匹配(即当不知道一个对象的类型可使用switch检测类型):

switch animal {
case let cat as Cat:
print("如果是Cat类型对象,则做相应处理")
case let dog as Dog:
print("如果是Dog类型对象,则做相应处理")
default: break
}

(4)as!的使用:

向下转型时使用。由于是强制类型转换,如果转换失败会报 runtime运行错误。

(5)as?的使用:as? 和 as!操作符的转换规则完全一样。但 as?
如果转换不成功的时候便会返回一个 nil对象。成功的话返回可选类型值(optional),需要我们拆包使用。

6.“App Transport Security has blocked a cleartext HTTP (http://)
resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file”

找查资料后发现,新特性要求App内访问网络请求,要采用 HTTPS协议。

但是现在公司的项目使用的是 HTTP 协议,使用私有加密方式保证数据安全。现在也不能马上改成 HTTPS协议传输。

最终找到以下解决办法:

1、在Info.plist中添加 NSAppTransportSecurity类型 Dictionary ;

2、在 NSAppTransportSecurity下添加 NSAllowsArbitraryLoads
类型Boolean ,值设为 YES;

7.通用的splitViewController:

参考:http://nshipster.cn/uisplitviewcontroller/

8.iOS中显示文字方式有三:UILabel,UITextField,UITextView,其中能够接受用户输入的有UITextField和UITextView,而UITextView支持多行文字。

9.Xcode工程目录的folder和group的区别:

参考:https://www.jianshu.com/p/2ddba8c0062c

xcode中加入资源文件夹:

要到项目实属性->Build Phases中的Copy Bundle Resources加上文件夹。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: