个人笔记(随时更新)

目前正在用swift 3.0写一个自己的视频类项目,快写完了,忽然想整理一下一些细节,个人感觉swift 还是不够完善,很多oc种的功能比如kvo,想要去用需要用@dynamic 去标记变量 ,同时自己学的不够好,还需要进一步去将更多swift 的语法用到自己的代码中,这样才能记得清楚,自己研究还不够深入,可能有些错误的地方,请指正:

开始

项目中,
-当跨controller返回时,需要删除栈中的控制器
-动态操作UITableViewCell 时,需要对模型数组操作:

for (index,verify) in self.pendingArray.enumerated() {
if verify == pending {
self.pendingArray.remove(at: index)
//找到了直接暂停遍历
break
}
}

移动浮动图标,悬浮的图标有时候影响操作,需要挪开,但是又能隐藏

private func panSomeWhere(_ gp: UIPanGestureRecognizer) {
//拖动的位置跨度
let point = gp.translation(in: self.view)
//将拖动的试图的中心按拖动的距离挪动
var destinationX = (gp.view?.center.x)! + point.x
var destinationY = (gp.view?.center.y)! + point.y
let viewH = (gp.view?.frame.size.height)! / 2
let viewW = (gp.view?.frame.size.width)! / 2
if destinationY - viewH < 0 { destinationY = viewH } //上边界
if destinationX - viewW < 0 { destinationX = viewW } //左边界
if destinationY + viewH > SCREEN_H {destinationY = SCREEN_H - viewH}//下边界
if destinationX + viewW > SCREEN_W {destinationX = SCREEN_W - viewW}//右边界
gp.view?.center = CGPoint.init(x: destinationX, y: destinationY)
//将gp置0,防止拖动的view滑出出窗外
gp.setTranslation(CGPoint.zero, in: view)
}

swift 中button 的setSelect没有了,可以用属性监测的willSet,didSet 去做
class MyButton : UIButton {

override var isSelected: Bool {
    willSet {
        print("changing from \(isSelected) to \(newValue)")
    }

    didSet {
        print("changed from \(oldValue) to \(isSelected)")
    }
}

}

let button = MyButton()
button.state == .normal
button.isSelected = true // Both events fire on change.
button.state == .selected
button.isSelected = true // Both events still fire.

异常处理代码:

func uncaughtException() {

  NSSetUncaughtExceptionHandler { (exception) in

        //异常处理信息
        let array = exception.callStackSymbols

        let reson = exception.reason

        let name = exception.name

        let errorContent = "=======异常错误报告========\nname:\(name)\nreson:\(reson)\ncallStatackSymobols:\(array.joined(separator: "\n"))"

        try?errorContent.write(toFile: NSHomeDirectory()+"/Documents/error.log", atomically: true, encoding: String.Encoding.utf8)

    }
}

func readLog() {

    let dataPath = NSHomeDirectory()+"/Documents/error.log"

    let readHandle = try?FileHandle.init(forReadingFrom: URL.init(string: dataPath)!)

    let data = readHandle?.readDataToEndOfFile()

    if  let fileData = data {

        let readString = String.init(data: fileData, encoding:String.Encoding.utf8)

        print("content====>\(readString!)")

    }
}

字符串转data型

let data = str.data!(using: String.Encoding.utf8.rawValue)!

data转string型

let str = NSString(data:data! ,encoding: String.Encoding.utf8.rawValue)

NSCaseInsensitiveSearch = 1,//不区分大小写比较

NSLiteralSearch = 2,//区分大小写比较

NSBackwardsSearch = 4,//从字符串末尾开始搜索

NSAnchoredSearch = 8,//搜索限制范围的字符串

NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值