开发自己第一个Swift项目(持续更新)

创建swift项目(略过)。把我自己创建新项目的整个过程记录一下,由于Swift不是太熟,属于摸着石头过河,有很多幼稚的问题,请高手跳过。

1、pch文件,在OC中,有个pch文件,而在swift中,创建一个.swift文件 就可替代pch,方便快捷。不需要配置build-setting


开发自己第一个Swift项目(持续更新)_第1张图片
开发自己第一个Swift项目(持续更新)_第2张图片

接下来,在OC中有很多好用的第三方包,比如AFNetwork,MJRefresh等,但这些包只有OC版,而当前项目为Swift。

现在以AFNetwork为例,将OC文件拖入项目,XCode会提示

开发自己第一个Swift项目(持续更新)_第3张图片

点击YES,Xocde就会在新建OC文件的同时帮我们新建一个xxx-Bridging-Header.h文件,xxx是你的项目名称(Product Module),然后我们得编辑这个文件才能让Swfit代码调用OC代码


开发自己第一个Swift项目(持续更新)_第4张图片
开发自己第一个Swift项目(持续更新)_第5张图片

如此,就可以正常使用AFNetworking了。


接下来重写原项目的基类代码。

1、protocol 协议代理

定义方法,如果方法是可选的则添加前缀@objc optional,并且在protocal前添加@objc 如

@objc protocol  AlertViewEventDelegate{

     @objc optional func eventAtIndex(alertView : MyAlertView , event :      Any , index : NSInteger) -> Void

}

2、枚举定义

enum BadgeValuePosition {

    case BadgeValuePositionTopLeft

    case BadgeValuePositionTopRight

    case BadgeValuePositionCenterLeft

    case BadgeValuePositionCenterRight

    case BadgeValuePositionBottomLeft

    case BadgeValuePositionBottomRight

}

3、字符串的截取

搜了很多String的截取,貌似在使用Range的时候,比较麻烦。所以我采取了转成NSString,配合NSRange进行截取,如下

var testStr : String = "123456789"

testStr = (testStr as NSString).substring(with: NSMakeRange(1,2))

4、16进制字符转数字

开发中,用到了颜色字符串(16进制)转数值,我写的方式如下:

class func hexValueToInt(str : String) -> Int{

    var hexString : String = str.uppercased()

    var sum : Int = 0

    for i in hexString.utf8 {

        sum = sum * 16 + Int(i) - 48

       if i >= 65 {

           sum -= 7

        }

    }

return sum

}


5、Array排序

var userList = [UserInfo]()

userList.append(UserInfo(name:"张三", phone:"13717717777"))

userList.append(UserInfo(name:"李四", phone:"13888888888"))

userList.append(UserInfo(name:"赵五", phone:"13417817817"))

userList = userList.sorted(by : {$0.name < $1.name})

6、判断属性类型 isKind

if a.isKind(of : A.self){

}

7、扩展(extension)添加属性

extension UIView{

    var viewOrigin : CGPoint {

       get{

           return self.frame.origin

        }

       set{

          var rect : CGRect = self.frame

           rect.origin = newValue

          self.frame = rect

      }

}

}

8、Swift3 实现单例

项目中的用户信息一般都是单例模式,在swift3.0中弃用了dispatch_once,可以采用以下几种形式

    1)普通创建法

final class Single : NSObject {

    static let shared = Single()

    private override init() {}

}

   2)静态创建法

let single = Single()

class Single : NSObject{

//-MARK: 单例:方法2

     class var sharedInstance2 : Single{

          return single

    }

}


9、集成snapkit

你可能感兴趣的:(开发自己第一个Swift项目(持续更新))