一.SQLite的使用 采用SQLite数据库来存储数据。SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些。还是一步步来吧!....dylib与前者的区别暂时不知,两者应该差不多);在项目文件中头文件或者源文件中添加头文件#import "/usr/include/sqlite3.h" 第二步:开始使用SQLite: 1.打开数据库...使用前注意:如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库。...这是因为数据库默认使用ascII编码方式。所以要想正确从数据库中取出中文,需要用NSString来接收从数据库取出的字符串。...二.FMDB的使用 github地址是https://github.com/ccgus/fmdb // 继承 # pod 'FMDB/SQLCipher' 1.FMDB的创建: NSString
itemData = self.tableData[indexPath.row]; ZJFunc.unselectCell(tableView: tableView); } Cell自动高度 参见文章:iOS...设置tableViewCell的高度 代码中使用到的工具类 import UIKit class ZJFunc{ ///延迟执行方法 static func delay(delay...DispatchQueue.main.async { callBack(); } } } ///取消选中的tablecell...inset.bottom; let maximumOffset = size.height; //当currentOffset与maximumOffset的值相等时...也可以根据这两个值的差来让他做点其他的什么事情 let space = maximumOffset-currentOffset; return space; }
iOS Mirror的使用 使用Mirror可以在不获取对象文件的情况下,知悉该对象所有的属性,不管是私有还是公开的。...self.pDic = ["hair": "black", "eyes": "black"] } } 随便定义三个类,Person -> Human -> Animal 这是他们的继承关系...而且还可以获取对象所继承的相关信息,看以下例子: let p = Person() var mir: Mirror = Mirror(reflecting: p) let baseType = Animal.self...直到为空,以下是打印信息:先打印Person类,再是继承的Human类信息,最后是基类Animal信息。...==================================" 如果你不想Mirror打印一个类所有属性的话,可以给类添加一个扩展遵循协议CustomReflectable:当对Person类使用
前言 在iOS开发过程中,有些时候会用到去重处理,也就是去掉重复的元素或者个数,然后再进行排序处理,这就使用到了集合(NSSet),它其实是一种哈希表,通过运用散列算法来查找集合中的元素。...集合和数组的相同点:都是存储不同元素的地址,不同点:NSSet中的元素都是被自动过滤之后的不会重复的元素,NSArray中的元素却是允许重复的;NSSet是一个无顺序的集合,NSArray是一个有顺序的集合...相对来说,NSSet的处理效率比NSArray的要快。 本节内容就来简单的介绍一下NSSet的使用,并且会举一个实际使用案例来展示。...一、基本常用的方法 (一)NSSet 1、集合初始化: NSSet在初始化的时候,赋值的时候如果放入两个相同元素的话,会自动删除其中一个相同的元素。...封装了一个工具类来进行系统化处理,具体代码及使用地方如下所示: 1、工具类.h文件: #import @interface JSHistoryTool
今天决定给手上的项目加上一个数据库,用来进行数据持久化操作,关于在iOS端的数据持久化方式的差异,这里也就不再赘述,相信如果真实使用并且去感受过的人,有自己的评判标准。...在比较了Realm、SQLite之后,我决定在项目中依然使用SQLite数据库,并切还是使用FMDB这个第三方库来简化操作。...SQLite语句,从我自身来说,感觉其实没有那么好的记忆力,所以我又花了一点点时间来温习FMDB的常规操作,想到自己从来没有总结过数据库这方面的知识,今天就花一点点时间,对iOS端SQLite数据库做一点操作层面的总结...建表以及关闭表 使用数据库的第一件事,就是建立一个数据库。要注意的是,在iOS环境下,只有document directory 是可以进行读写的。...比较不同的是,因为插入的数据会跟Objective-C的变数有关,所以在string里使用?号来代表这些变数。
这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码。...我自己的理解就是 这个.pch文件的作用就是 在这里定义一些东西之后可以在整个工程内的任何一个文件中使用在.pch文件中定义的东西 并且不用导入任何的头文件我的做法: 1.首先呢我会先添加一个.h...创建成功之后 可以在这个文件里边添加 一些自己需要的宏定义 比如:我的 // // Header.h // My9xiuShow // // Created by TaoLi on 16/12...1 将Precompile prefix header 设置为yes 这样的目的是编译之后这个文件会缓存 这样可以加快再次编译的速度 2 Prefix Header 后边双击 然后将新建的那个....这样的话就大功告成了: 人后 commend+b 编译下本项目 然后就可以使用了如我:rgb这个宏定义就可以使用了 ?
一、换行模式 [image.png] 很明显以上是我们不期望的效果。 UILable默认是以单词为单位换行的,它会把连续的数字或英文单词作为一个单词,以空格分开截断换行....二、 intrinsicContentSize 在AutoLayout中,UILabel是不用指定尺寸大小的,只需指定位置即可,就是因为,只要确定了文字内容,字体等信息,它自己就能计算出大小来。
日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。 你也可以对其进行定制,令其使用任何范围的日期。...UIDatePicker这个类的对象让用户可以在多个车轮上选择日期和时间。 iPhone手机上的‘时钟’应用程序中的时间与闹铃中便使用了该控件。...使用这个控件时,如果你能配置正确,当用户滚动车轮到一个新的日期或者时间上时,利用UIControlEventValueChanged触发事件。...如果你使用该模式,必须在应用程序中设置一个NSTime对象,让倒计时中的时间不断减少。...如果选择了使用动画,则表盘会滚动到你指定的日期: [datePicker setDate:maxDate animated:YES];
YogaKit is used for iOS....多一个stretch选项,stretch是指在垂直轴上拉伸,前提是垂直轴方向的长度值为auto Align Self align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items...属性 演示 Align Content 一行:Align Items 多行:Align Content Align Content 属性定义了多根轴线的对齐方式。...Flex Basis,Grow,and Shrink 1.basis:固定主轴方向的长度,优先级高于width或height 2.grow:空间大,瓜分剩余空间,值越大,说明瓜分的剩余空间越大 3.shrink...均值在1.06ms, yogalayout均值在1.20ms左右,但yogalayout布局编写简单,灵活性强(空间过大或不够的情况下),省去了开发者的计算逻辑,开发者只需要关注边距,布局方式,控件大小即可
// JS端调用alert时所传的数据可以通过message拿到 // 在原生得到结果后,需要回调JS,是通过completionHandler回调 self.showNoticeText(message..., completionHandler: @escaping (Bool) -> Void) { // JS端调用confirm函数时,会触发此方法 // 通过message可以拿到JS端所传的数据...// 在iOS端显示原生alert得到YES/NO后 // 通过completionHandler回调给JS端 let alertView = UIAlertController.init...(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { //h5给端传值的内容...,可在这里实现h5与原生的交互时间 let messageDic = message.body print(messageDic) }
IconFont的使用 github链接 背景: 最近设计提了要求,切图用IconFont 一开始,在搜了IconFont的使用后,选中了TBCityIconFont,使用了之后,发现对于图片的支持不太好...然后就pass了,换了另一个Swift的Iconic的第三方库,这个库有个好处,是可以自动把.ttf文件里的Icon生成一个枚举使用的时候特别方便。...然后如果是本地的文件,我希望可以不用手动收入unicode码。最后就是图片支持宽高不等的显示。 整体的原理是Working with icon fonts in iOS....来自iconfont怎么在iOS中使用了 ?...Code example in Swift 3. iconfont怎么在iOS中使用了 Iconfont-阿里巴巴矢量图标库 github Iconic
PureLayout是iOS Auto Layout的终端API,强大而简单。由UIView、NSArray和NSLayoutConstraint类别组成。...PureLayout为大多数Auto Layout用例提供了一个开发者友好型的界面 github地址: https://github.com/PureLayout/PureLayout 看看这张图的布局...下面是在pureLayout中经常使用的五个参数(There are 5 specific attribute types, which are used throughout most of the...API) 1.ALEdge 2.ALDimension 3.ALAxis 4.ALMargin available in iOS 8.0 and higher only 5.ALMarginAxis available...in iOS 8.0 and higher only 大家直接照着下面代码敲一遍吧, 就差不多会了. // // ViewController.m // PureLayoutDemo // //
在iOS开发中,开发"表单"界面,字段稍微多一点的一般都用UITableView来做,而XLForm就是这样一个框架,它是创建动态表格视图最牛逼的iOS库, 用它实现表单功能,非常简单,省心省力。...但是很可惜,搜索了很多文章都只是翻译官方文档,很多人在使用该库的时候可能都被官方文档带走远了,不知道如何具体使用。正好最近也要用到这个库,所以写个入门使用文章供大家参考。...一、 导入项目 使用CocoaPods或者手动导入库文件,本人选择直接导入项目源文件的方式。 ?...中的方法都可以正常使用。...@property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder NS_AVAILABLE_IOS
CAShapeLayer继承自CALayer,可以使用CALayer的所有属性值。 CAShapeLayer需要与 贝塞尔曲线 配合使用才有意义(这是个人经验)。...使用CAShapeLayer与贝塞尔曲线可以画出你想要的图形。 相对于Core Graphics绘制图片,使用CAShapeLayer有以下一些优点: 渲染快速。...(贝塞尔曲线扫盲) 贝塞尔曲线对应iOS中是UIBezierPath对象,它是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。...我们使用直线段去创建矩形和多边形,使用曲线段去创建弧(arc),圆或者其他复杂的曲线形状。...3.简单的使用 使用CAShapeLayer和UIBezierPath画一条直线和一个椭圆形,效果如下: ?
parameters) { return [self goTargetViewController:parameters isParam:NO]; }]; } module:就是功能模块的名字...target:需要跳转的ViewController名字 Modal:跳转方式是push还是present /** 有参路由注册 */ - (void)registerModuleParameters...parameters) { return [self goTargetViewController:parameters isParam:YES]; }]; } module:就是功能模块的名字...target:需要跳转的ViewController名字 Modal:跳转方式是push还是present parameter:需要传递的参数 使用 无参push方式 NSURL *viewUrl...如果您有好的方式也可以提。 具体使用可以参考Demo Demo
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...
使用步骤: 1.初始化UITabBarController 2.设置UIWindow的rootViewController为UITabBarController 3.根据具体情况,通过addChildViewController...方法添加对应个数的子控制器,添加的所有子控制器都保存在TabBarController的childViewControllers数组当中....UITabBarController添加控制器的方式有2种 添加单个子控制器 (void)addChildViewController:(UIViewController *)childController...方法 设置子控制器数组 @property(nonatomic,copy) NSArray *viewControllers; UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem
原理 其中@selector()是取类方法的编号,取出的结果是SEL类型。 SEL:类成员方法的指针,与C的函数指针不一样,函数指针直接保存了方法的地址,而SEL只是方法的编号。...SEL消息机制的工作原理: 在作为所有类的根类的NSObject 中.isa的成员变量,所以所有的对象都有一个isa的变量,而isa变量指向该对象的类。...类其实也是实体的存在, 程序运行时每个类都有自己的存储空间,而isa 便指向这样一个类的空间,便建立了类和对象的对应关系,类空间包含了该类的成员变量以及方法实现,还包含指向父类空间的指针。 ?...image 方法以selector作为索引,selector的数据类型是SEL,对应每个方法的位置的ID,当我们寻找方法的时候寻找的是方法的ID,存在一个方法和ID对应的methodList表来存储这种对应关系...objc_msgSend()函数会使用myObject的isa指针来找到myObject放入类空间结构并在类空间结构中查找selector 8所对应的方法,如果没有找到,那么将使用指向父类的指针找到父类空间结构进行
简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 二,使用方法 系统框架已经支持KVO,所以程序员在使用的时候非常简单。 1. 注册,指定被观察者的属性, 2....removeObserver:self forKeyPath:@"price"]; [stockForKVO release]; } 四,小结 KVO这种编码方式使用起来很简单,...当使用KVO、Core Data、CocoaBindings、AppleScript(Mac支持)时,KVC是关键技术。...二,使用方法 关键方法定义在:NSKeyValueCodingprotocol KVC支持类对象和内建基本数据类型。 获取值 valueForKey:,传入NSString属性的名字。...最后一次修改是直接修改 所以没法产生通知 四,小结 KVO/KVC这种编码方式使用起来很简单,很适用与datamodel修改后,引发的UIVIew的变化这种情况,就像上边的例子那样,当更改属性的值后
所有的未使用方法都会被列出,包含pod三方库中的方法; 原理 原理利用 Mach-O 文件的结构和展示内容: __TEXT:__objc_methname: 中包含了代码中的所有方法; __DATA...__objc_selrefs:中则包含了所有被使用的方法的引用,通过取两个集合的差集就可以得到所有未被使用的代码. ?...由于正则表达式的一些问题造成的,可以将objc_cover.py中的: re_sig_sel_ios = re.compile("\s*imp 0x\w+ ([+|-]\[.....+)\])") 更换为即可解决问题 re_sig_sel_ios = re.compile("\s*imp\s*0x\w+ ([+|-]\[....可能未使用的方法、属性、类 开始检测 1. cd 2.
领取专属 10元无门槛券
手把手带您无忧上云