摘要:ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现。 下面总结了各种常用的操作: 1,遍历一个目录下的所有文件 //假设用户文档下有如下文件和文件夹[test1.txt,fold1/test2.txt] let m
阅读全文
摘要:iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒。下面介绍常用的程序文件夹目录: 1,Home目录 ./ 整个应用程序各文档所在的目录 let homeDirectory = NSHomeDirectory() 2,Documnets目录 ./Documen
阅读全文
摘要:过滤字符串中的空格 extension String { // 去掉首尾空格 var removeHeadAndTailSpace:String { let whitespace = NSCharacterSet.whitespaces return self.trimmingCharacters(
阅读全文
摘要:一,前言 UITextField、UITextView组件系统原生就支持文字的复制,但有时我们需要让其他的一些组件也能实现复制功能,比如点击复制UILabel上的文字、UIImageView中的图片、UITableView里单元格的内容、或者点击按钮把文字或图片自动复制到粘贴板中等等。这些我们借助
阅读全文
摘要:生成二维码 func tapAction() { /// CIFilter let filter = CIFilter.init(name: "CIQRCodeGenerator") filter?.setDefaults() /// Add Data let data = "https://www
阅读全文
摘要:1、数字+输入位数 判断 extension 自己的VC或view : UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacemen
阅读全文
摘要:在iOS开发我们会遇到文件、音频、视频等等下载后本地存储的情况,这时对读文件,写文件就显得很重要,对文件夹以及文件中的文件的操作,这时就可以使用NSFileManager(FileManager)或NSFileHandle(FileHandle)来实现。下面会用OC和Swift的对比来实现对文件和文
阅读全文
摘要:自定义tabbar,tabbar整体悬浮状态,效果如下图: 一. 自定义TabBar 上图中背景和中间按钮都是图片,首先要把两张图片添加到自定义tabbar中: override init(frame: CGRect) { super.init(frame: frame) initView() }
阅读全文
摘要:1. Swift 字符串创建 // 类型推断 let str = "Hello" // 指定类型 let str1 : String = "Hello" 2. Swift 字符串拼接 let str1 : String = "Hello" let str2 = "Hello" print(str1
阅读全文
摘要:/// 自定义通知枚举类型 enum JYNotification: String { ///刷新员工列表 case refreshStaffList var stringValue: String { return "JY" + rawValue } /// 通知名称 var notificati
阅读全文
摘要:最近在Swift项目实践中,用到了系统的一些权限请求,如定位、相机、相册、日历.....,为了更方便的查询各种权限状态以及使用这些功能,我简单的整理了一些常用的系统权限的状态以及授权。 特别说明:在使用这些功能时,需要在info.plist中添加对应的描述,否则将导致项目崩溃,在添加定位权限描述以及
阅读全文
摘要:前言 代码风格可能是一个有争议的话题,并且在开发人员之间引发一些激烈的讨论。使用工具强制执行一套代码风格规则对于避免一些争论,以及确保在整个项目中保持代码风格的一致性非常有帮助。SwiftLint 可以很容易的整合进 Xcode 项目中,以便在编译时将代码风格冲突标记为警告或者错误。 使用 Xcod
阅读全文
摘要:理解Property Wrappers 为了更好地了解属性包装器,让我们举一个例子来看一下它们可以解决哪些问题。 假设我们要向我们的app添加一种日志记录功能。 每次属性更改时,我们都会将其新值打印到Xcode控制台。 这样追踪错误或追踪数据流时非常有用。 实现此目的的直接方法是覆盖setter:
阅读全文
摘要:如果对C++有了解的话,理解运算符重载(Operator Overload)就很简单。OC不支持运算符重载,但Swift支持。 一、运算符重载 类、结构体、枚举可以为现有的运算符提供自定义的实现,这个操作叫做运算符重载。 正常加法运算: let v1 = 10 let v2 = 20 let v3
阅读全文
摘要:一,支持条件编译: Swift支持条件编译的内容是不多的,大概就是下面这些: // 操作系统:macOS\iOS\tvOS\watchOS\Linux\Android\Windows\FreeBSD #if os(macOS) || os(iOS) // CPU架构:i386\x86_64\arm\
阅读全文
摘要:stride函数,为可变步长类型值的序列 from to 其中from to,最后一个值将会小(大)于to的值 示例一: for index in stride(from:0, to:3, by:1) { print(index) } // print 0, 1, 2 示例二: for index
阅读全文
摘要:Swift 集合类型 Swift 提供了三种主要的集合类型,称为数组、集合和字典,用于存储值的集合。 数组是有序的值集合 集合是唯一值的无序集合 字典是键值关联的无序集合 Swift 中的数组、集合和字典必须明确其中保存的键和值类型,这样就可以避免插入一个错误数据类型的值。同理,对于获取到的值你也可
阅读全文
摘要:一,概述 所谓的 内置函数 是指无需引入任何模块(比如说Fundation等)即可以直接使用的函数。 二,常规使用 1.断言 assert,参数如果为ture则继续,否则抛出异常 let number = 3 /*第一个参数为判断条件,第二各参数为条件不满足时的打印信息*/ assert(numbe
阅读全文
摘要:一,包含高阶函数 contains(element:) 平时我们经常会用到contains(element:)来判断集合中是否包含某一元素(element需要遵循Equatable协议的): let sayHello:String = "Hello world" sayHello.contains(
阅读全文
摘要:初探高阶函数 在 Swift 中,高阶函数一共有下面几个: map:对给定数组每个元素,执行闭包中的映射,将映射结果放置在数组中返回。 flatMap:对给定数组的每个元素,执行闭包中的映射,对映射结果进行合并操作,然后将合并操作后的结果放置在数组中返回。 compactMap:对给定数组的每个元素
阅读全文