iOS开发(Swift)——Swift开发技巧与注意事项

iOS开发交流群:301058503

Swift和OC有着很大的相同点,同时又有着不少的不同点,下面我介绍一下我在开发中发现的一些问题:

1、常用的第三方:Alamofire(Swift版本的AFNetworking)、Kingfisher(Swift版本的SDWebImage)、ESPullToRefresh(上拉和下拉,与MJRefresh的效果差不多,不过方法名有相当大的出入)、SnapKit(Swift版本的Mansonry)、Sqlite.swift(数据库)
2、Swift非常注重数据类型:在开发中,对于不确定甚至是确定的数据类型,要设置成Any类型。如:

var data: [Any] = []
var param = Dictionary<String, Any>()

还有,对于操作符的前后数据类型也要保持一致,如:

var count: Int = 2
 make.left.equalTo(self.snp.right).multipliedBy(1.0*Double(i)/Double(count))

3、在定义变量时,为了保证不为空,需要初始化

 var count: Int = 2
 var data: [Any] = []

4、注意时间器的使用,详情见
http://blog.csdn.net/liumude123/article/details/54571895
5、定义代理时需要使用@objc,详情见
http://blog.csdn.net/liumude123/article/details/78412390
6、如果需要遍历某个父View的子View,需要把字View的tag设置成大于0(==0是无法遍历到的);如果有三层的View,如View1 add View2,View2 add View3,那么View2和View3的tag也不能相同,因为在遍历View1时,会把View1的子View(即View2)及其子View(即View3)一起遍历出来
7、字符串的截取稍微变复杂了,你可以通过延展把它变成和OC一样

extension String {


    func stringWithRange(start: Int ,length: Int) -> String{
        if length+start > self.count {
            return self
        }
        let startIndex = self.index(self.startIndex, offsetBy: start);
        let endIndex = self.index(self.startIndex, offsetBy: length+start)
        let range = Range<String.Index>(uncheckedBounds: (lower: startIndex, upper: endIndex))
        let str = String(describing: self[range])
        return str
    }

}

8、Swift常用String代替OC的NSString,Int代替OC的NSInteger,Dictionary代替OC的NSDictionary
9、Any类型:记得OC里面有个id的数据类型吧。Any=id?很顺理成章吧,可是你真的想多了。OC 的id类型包括nil,但是Any却不包括nil
10、待续

猜你喜欢

转载自blog.csdn.net/liumude123/article/details/78594338
今日推荐