let path = Bundle.main.path(forResource: "settingPlist", ofType: "plist") let array = NSArray(contentsOfFile: path ?? "") ?? [] for obj in array let arr = obj as! [[String:AnyObject]] var sectionArr = [SettingModel]() for dict in arr let settingModel 现在有一个需求:需要加载本地plist文件中的数据,数据格式如下图所示:即:数组里存放2个数组,然后这2个数组又分别存放几个字典。要加载这些数据你可能首先会想到的就是第一种方式:代码如下首先定义一个数组存放数据: fileprivate lazy var sections = [[SettingModel]]()第一种方式:双层for循环 le...
这里写自定义目录标题利用 flat Map 代替 双层 for 循环 代码 利用 flat Map 代替 双层 for 循环 flat Map :平铺的意思,是高阶函数,可以对数组降维。 func test() let dic11 = ["name" : "lixy"] let dic12 = ["name" : "huangyanlan"]; let arr1 = [dic11,dic12] let dic21 = [
OC 的for 循环 写法 :for (int i = 0;i < 100;i++) { NSLog(@"i=%zd",i); } Swift 的for 循环 写法 :let a = 100; for i in 0 ..< a { print("a=\(i)"); } Swift for 循环 不需要i的 写法 :let a = 100; for _ in 0..<a {...
前几天看同事的代码,发现他有个地方用了java8的 flat Map 扁平化流来处理两个集合的交集并集。我就测了一下,是否有必要这样做。 接下来我们看一下,首先有两个实体类,第一个实体类是user类 @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @AllArgsConstructor @NoArgsConstructor @Builder public class SysUser implements Serializab
在游戏开发 ,比如跑酷游戏。我们需要实现背景的无限 循环 滚动,来营造运动的效果。除了单层的背景滚动,还有视差滚动。 视差滚动是指让多层背景以不同的速度移动,形成立体的效果,从而带来非常出色的视觉体验。 样例说明: 1,本样例背景分为两层。第一层更靠近游戏窗口的色彩更鲜艳,移动速度也更快一些。第二层由于要模拟远处的场景,所以颜色也更淡一些,对比度更弱一些,移动速度也更慢一些。 2,要实...
func findIndex<T: Equatable>(of valueToFind: T, in array:[T]) -> Int? { for (index, value) in array.enumerated() { if value == valueToFind { return index return nil 在上面的例子 ,泛型别名为T,限制条件为T: Equatable,意思是T必须符合Equatable协议 还可以指定多个限制条件 func test<T>(_ value: T) where T: Equatable, T: Hashable { 这里的限制条件为T: Equatable, T: Hashable,意思是T必须符合Equatable和Hashable协议