Swift 4.0 数组(Array)之过滤器(filter)的使用


我们先来定义一个常量整型数组

let array = [5, 4, 3, 1, 2]

过滤器(filter)使用之筛选出大于3的值

let resultArray = array.filter { (item) -> Bool in
    return item > 3
 }
print(resultArray) // [5, 4]

简化可以这样写

let resultArray = array.filter { 
    return $0 > 3
 }
闭包中的‘return’是可以省略的

过滤器(filter)使用之筛选出能被2整除的值

let resultArray = array.filter { (item) -> Bool in
     return item%2 == 0
  }
 print(resultArray) // [4, 2]

简化可以这样写

let resultArray = array.filter { return $0%2 == 0 }
print(resultArray) // [4, 2]

总结

  • 1、过滤器(filter)使用并不复杂,很好掌握。
  • 2、过滤器(filter)不局限于以上的使用,望能举一反三。
  • 3、过滤器(filter)需要定义一个变量(或常量)去接收过滤后的结果。
  • 4、以上例子往往是通过for来遍历数组去实现的,有了过滤器(filter)可以更简单的实现,也使代码更整洁,建议合理使用过滤器(filter)。

iOS开发将颜色(UIColor)转为图片(UIImage)


Objective-c 版本

- (nullable UIImage *)imageFromColor: (nonnull UIColor *)color withSize:(CGSize)size {
    
    CGRect rect = CGRectMake(0, 0, size.width, size.height);
    
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context,color.CGColor);
    CGContextFillRect(context, rect);
    
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return image;
}

Swift 版本

extension UIColor {
    
    func asImage(_ size: CGSize) -> UIImage? {
        
        var resultImage: UIImage? = nil
        let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
        UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale)
        
        guard let context = UIGraphicsGetCurrentContext() else {
            
            return resultImage
        }
        
        context.setFillColor(self.cgColor)
        context.fill(rect)
        resultImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return resultImage
    }
}

使用

let colorImage = UIColor.black.asImage(CGSize(width: 100, height: 100));

macOS中SSH公钥配置(github、Coding)


生成公钥

打开命令行终端输入下面命令(以 my_email@icloud.com 邮箱为例)

ssh-keygen -t rsa -b 4096 -C "my_email@icloud.com"

按Enter后提示输入公钥/私钥保存的名称(如下图)

输入 my_rsa 按Enter(可直接按Enter,终端提供默认名称),提示输入公钥/私钥密码(如下图)

按Enter后提示再次输入公钥/私钥密码(如下图),

按Enter后,生成公钥/私钥成功(如下图)

使用

使用下面命令打开公钥然后复制,到github 或coding后台添加
cat my_rsa.pub

Github 后台如下

Coding 后台如下


git常用命令学习


把当前目录变成Git可以管理的仓库
git init
查看仓库当前的状态
git status
添加新文件
git add <文件名>         // 添加某个新文件(目录)
git add *           // 添加所有新文件(目录)
查看修改的内容
git diff
提交更改(本地仓库)
git commit -m "一些描述"        
更新远程代码到本地仓库
git pull
将本地仓库代码推送到远程仓库
git push      
git push -u origin master // 推送到远程master分支并关联
克隆一个远程仓库到本地
git clone remoteURl
为本地仓库添加远程Git地址
git remote add origin remoteRUL
查看日记
git log
git log --pretty=oneline //    简洁显示
查看你的每一次命令
git reflog
查看工作区和版本库里面最新版本的区别
git diff HEAD -- readme.txt
丢弃工作区的修改(还原文件)
git checkout -- file // (注意是两个-)
添加标签,tagName为标签的名字
git tag -a tagName
从本地版本库删除文件
git rm file
创建分支
git checkout -b dev // 创建dev分支并切换到dev分支
git branch dev         // 创建dev分支
切换分支
git checkout dev:切换到dev分支
列出所有分支
git branch
合并分支
git merge dev // 合并dev分支到当前分支上
版本回退
git reset –hard xxx     // 回退到xxx版本号,xxx为commit,可通过 git log 查看
git reset --hard HEAD^  // 回退到上一个版本
git reset --hard HEAD^^     // 回退到上上一个版本
git reset –hard HEAD~100 // 回退到上100个版本
删除远程tag
git push origin :refs/tags/tagName
git push origin : tagName
推送本地 tag 到远程
git push origin tagName
git push origin tagName:newTagName //newTagName远程仓库tagName的新名称
删除远程branch
git push origin : branchName
推送本地 branch 到远程
git push origin branchName
移除版本控制
git rm -r --cached filePath
// 注意命令不是删除文件,是从版本库中移除(解除git的版本管理)
本地分支强行覆盖远程分支(危险命令)
git push -u origin master --force
使用远程分支强行更新本地代码-放弃本地分支所有修改(危险命令)
git fetch --all
git reset --hard origin/master // 远程分支名称
git fetch
替换分支
git checkout master       // 切换到master分支
git reset --hard dev      // 将本地的 master 重置成 dev
git push origin master --force // 推送master到远程

如何将本地仓库关联到远程仓库


前提描述

  • 远程仓库初始化好
  • 本地已有一个项目
  • 本地项目不是 git clone下来的

如何将本地项目与远程仓库关联
进入项目根目录,依次执行以下命令

git init  
// 为项目初始化一个git本地仓库
git remote add origin remoteURl
// 为本地仓库添加远程仓库地址(remoteURl)
git checkout -b master
// 创建并切换到master分支
git add *
// 添加所有新文件/目录到暂存区
git commit -m "一些描述"
// 提交到本地版本库
git pull origin master --allow-unrelated-histories
// 将远程仓库与本地仓库合并 --allow-unrelated-histories 
// 告诉系统合并不相关的历史内容
// 否则出现fatal: refusing to merge unrelated histories错误

执行上面命令后会出现如下界面
按i进入编辑状态,随便写一些东西
按ESC退出编辑
按shift + :
输入wq 按Enter

git push -u origin master
// 将本地仓库推送到远程并关联到远程分支(下次直接git push就行了)