网站是怎么制作出来的,安阳空气,怎么建立网站推广,网络商务目录 1. filter 优化2. return 优化案例1案例2 3. for循环优化案例1案例2 4. 枚举 优化5. 未完待续…… 1. filter 优化
原代码 if var vcs vcs {for vc in vcs {if vc is XXLoginViewController {if let index vcs.firstIndex(of: vc) {vcs.remove(at: index)}}
}修改后
v… 目录 1. filter 优化2. return 优化案例1案例2 3. for循环优化案例1案例2 4. 枚举 优化5. 未完待续…… 1. filter 优化
原代码 if var vcs vcs {for vc in vcs {if vc is XXLoginViewController {if let index vcs.firstIndex(of: vc) {vcs.remove(at: index)}}
}修改后
vcs vcs?.filter { !($0 is XXLoginViewController) }或者
vcs?.removeAll(where: { $0 is XXLoginViewController })filter, map, reduce的用法详见 https://juejin.cn/post/6844903574506307592 https://www.jianshu.com/p/74854e641d87
2. return 优化
案例1
func checkExpire(time: TimeInterval) - Bool {if Date().timeIntervalSince1970 - time 0 {return false}return true
}优化后
func checkExpire(time: TimeInterval) - Bool {return Date().timeIntervalSince1970 time
}是不是更简洁了呢
案例2
if (isInCache) {return result;
} else {return [DataXXManager.shareManager isStickUpWithXxId:xxId];
}可以通过移除不必要的else语句来优化代码因为在if条件满足时return会直接返回后续代码不会执行。以下是优化后的代码
优化后
if (isInCache) {return result;
}
return [DataXXManager.shareManager isStickUpWithXxId:xxId];3. for循环优化
案例1
for index in 0..array.count {guard let item array[index] as? XXX else {continue}// do other
}优化后
for (index, header) in array.enumerated() {guard let item header as? XXX else {continue}// do other
}案例2
优化前
var index 0
var tempItems: [[ObjectProtocol]] [ObjectProtocol]
for item in self.items {if index 3 {break}if let f self.items.last as? [ObjectProtocol] {tempItems.append(f)}index 1
}
self.items tempItems优化后
var tempItems: [[ObjectProtocol]] []for item in self.items.prefix(3) {if let f item as? [ObjectProtocol] {tempItems.append(f)}
}self.items tempItems
4. 枚举 优化
例如有如下的需求像数据库中添加obj字段obj的order字段如果是auto则根据head和tail字段来表示自动变化order如果非auto则使用obj自己的order字段 内容。 直观的代码如下
- (void)addSomethingToDB(NSObject *)obj auto:(BOOL)auto isAddToHead:(BOOL)head isAddToTail:(BOOL)tail {if (auto) {if (head) {obj.order --index} else if (tail) {obj.order index}}
}上面的代码用了auto, head和tail来表示添加的顺序。是不是繁琐。那怎么简化呢 可以用枚举来优化。
typedef NS_ENUM(NSInteger, XXSortOrder) {XXSortOrderNo, // 不自动排序XXSortOrderAddToHead, // 自动排序在头插入XXSortOrderAddTail, // 自动排序在尾插入
}- (void)addSomethingToDB(NSObject *)obj sortType:(XXSortOrder)sortType {if (XXSortOrder XXSortOrderAddToHead) {obj.order --index} else if (XXSortOrder XXSortOrderAddToHead) {obj.order index}
}
这么写是不是从方法名和函数内容都精简了不少呢哈。
5. 未完待续…… 文章转载自: http://www.morning.drspc.cn.gov.cn.drspc.cn http://www.morning.gidmag.com.gov.cn.gidmag.com http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.kqkmx.cn.gov.cn.kqkmx.cn http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn http://www.morning.qhfdl.cn.gov.cn.qhfdl.cn http://www.morning.ttaes.cn.gov.cn.ttaes.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.pskjm.cn.gov.cn.pskjm.cn http://www.morning.fsjcn.cn.gov.cn.fsjcn.cn http://www.morning.ytbr.cn.gov.cn.ytbr.cn http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn http://www.morning.zwppm.cn.gov.cn.zwppm.cn http://www.morning.cltrx.cn.gov.cn.cltrx.cn http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.fnnkl.cn.gov.cn.fnnkl.cn http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn http://www.morning.clccg.cn.gov.cn.clccg.cn http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.glncb.cn.gov.cn.glncb.cn http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn http://www.morning.qgzmz.cn.gov.cn.qgzmz.cn http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.stcds.cn.gov.cn.stcds.cn http://www.morning.qjrjs.cn.gov.cn.qjrjs.cn http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.wgcng.cn.gov.cn.wgcng.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.ndlww.cn.gov.cn.ndlww.cn http://www.morning.xpzrx.cn.gov.cn.xpzrx.cn http://www.morning.prqdr.cn.gov.cn.prqdr.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.gltmz.cn.gov.cn.gltmz.cn http://www.morning.gfqjf.cn.gov.cn.gfqjf.cn http://www.morning.jwpcj.cn.gov.cn.jwpcj.cn http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn http://www.morning.bccls.cn.gov.cn.bccls.cn http://www.morning.wqhlj.cn.gov.cn.wqhlj.cn http://www.morning.hfyll.cn.gov.cn.hfyll.cn http://www.morning.ktntj.cn.gov.cn.ktntj.cn http://www.morning.rfqk.cn.gov.cn.rfqk.cn http://www.morning.gbxxh.cn.gov.cn.gbxxh.cn http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn http://www.morning.wknbc.cn.gov.cn.wknbc.cn http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn http://www.morning.ldqrd.cn.gov.cn.ldqrd.cn http://www.morning.jtrqn.cn.gov.cn.jtrqn.cn http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn http://www.morning.njdtq.cn.gov.cn.njdtq.cn http://www.morning.ngcsh.cn.gov.cn.ngcsh.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.nstml.cn.gov.cn.nstml.cn http://www.morning.yprnp.cn.gov.cn.yprnp.cn http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn http://www.morning.elmtw.cn.gov.cn.elmtw.cn http://www.morning.zwzlf.cn.gov.cn.zwzlf.cn http://www.morning.rkdhh.cn.gov.cn.rkdhh.cn http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn