OC集合类是一些非常有用的工具类,它可以用于存储多个数量不等的对象,并可以实现常用的数据结构(栈、队列等),此外,OC集合还可用于保存具有映射关系的关联数组。OC的集合大致可以分为:NSArray、NSSet、NSDictionary三种体系。NSArray代表有序可重复的集合;NSSet代表无序不可重复的集合;NSDictionary代表具有映射关系的集合。显然,这三类集合分别对应这Java中的List、Set和Map。 集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的
更重要的是,有时候在iOS面试的时候,部分面试官会不仅问你某种场景会用到什么框架,更会问你如果要你来实现这个功能,你有没有解决思路?所以,自己实现字典转模型还是有必要掌握的。有了这个基础,在利用运行时runtime的动态特性,你也可以实现这些第三方框架。
Cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息。Cookie中的字段与意义由服务端进行定义。例如,当用户在某个网站进行了登录操作后,服务端会将Cookie信息返回给终端,终端会将这些信息进行保存,在下一次再次访问这个网站时,终端会将保存的Cookie信息一并发送到服务端,服务端根据Cookie信息是否有效来判断此用户是否可以自动登录。
M13OrderedDictionary是拥有字典和数组功能的第三方集合序列,开发者可以通过索引和键值来实现对其中元素的访问。其实现了NSArray和NSDictionary中的所有方法,并且支持KVC与KVO。
NSDictionary类简介 1. 以key-object的形式保存数据,是一个集合类(collection) 2. 词典中词条的保存是无序的 3. 不可变词典(内容一旦init后就不能更改) 4. 既然不能更改,当然就不能进行删除、替换、增加操作,只能查询 5. key值不能重复 属性表(@property) @property 描述 @property(readonly) NSUInteger count 词典词条的数量 @property(readonly, copy) NSArray
iOS-UITableView 详解 (一) ✨建议收藏,用到时候一查就明白了 UITableView可以说是iOS开发中最重要的控件之一,它的使用非常广泛,今天我们来学习UITableView的使
在数组的开头和结尾插入/删除元素通常是一个O(1)操作,而随机的插入/删除通常是 O(N)的。
利用KVC的 valueForKeyPath API、谓词的NSPredicate、数组的sortedArrayUsingComparator:API进行实现。
Foundation框架中最常用的类。 Foundation框架中最我们经常用的类大致有NSString、NSArray、NSDictionary等等,虽然不需要将每一个类中提供了什么方法都记下来,但是需要做到心中有数,知道Foundation框架提供了什么样的方法,能够达到什么效果,用到的时候直接去API中查找即可,避免因为不知道有这些方法,而走弯路。 NSString NSString创建与内存存储 NSString是1个数据类型,用来保存OC字符串,NSString的本质是1个类,既然是1个类,所以,
NSArray 获取指定 元素 的位置 或者 判断是否存在指定的 元素 的时间复杂度是 O(n)(包含特定元素时,平均耗时是 O(n/2),如果不包含特定元素,耗时是 O(n))。
简介 Colours–颜色库,包含各种100种预定义的颜色和方法,可以简化颜色相关的开发工作. 最新示例: 点击下载 快速入门 安装 通过Cocoapods安装 pod 'Colours' 手动安装
ARKit的渲染能力是由其他框架实现的,除了苹果的SceneKit, Unity3D、UE, 或者其他自定义的OpenGL、Metal渲染引擎都可以与ARKit相结合。本文所介绍的技术都是基于SceneKit。
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Foundation-Dictionary.html 本文对Foundation框架中的字典类(NSDictionary和NSMutableDictionary)的使用做一个详细的总结。 1. NSDictionary 1.NSDictionar介绍 Dictionary翻译过来叫做"字典" 日常生活中,“字典”的作用:通过一个拼音或者汉字,就能找到对应的详细
键值编码是由NSKeyValueCoding非正式协议启用的一种机制,对象采用该机制来提供对其属性的间接访问。当对象符合键值编码时,其属性可通过字符串参数通过简洁、统一的消息传递接口进行寻址。这种间接访问机制补充了实例变量及其相关访问器方法提供的直接访问。
json与模型的转换框架很多,YYModel 一出,性能吊打同类组件,终于找了些时间观摩了一番,确实收益颇多,写下此文作为分享。
NSUserDefaults是用于保存应用程序设置,应用信息等轻量级数据的的一个类,其本质是将数据写为plist文件的形式保存在本地。在IOS中,系统为每一个应用程序都默认创建了一个NSUserDefaults对象。
我们可以使用setter方法为currentBalance属性赋值,这是直接的,但缺乏灵活性。
在OC中,因为采用内存计数的方式管理内存,所以浅复制时会对同一个内容计数加一,深复制则不会。
作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者,现就职于腾讯。 JavaScript越来越多地出现在我们客户端开发的视野中,从ReactNative到JSpatch,J
本文介绍了如何在iOS中使用MagicalRecord来简化Core Data的使用,包括使用MagicalRecord的API直接对对象进行操作、使用MagicalRecord的Record/Fetch计划对对象进行操作、以及使用MagicalRecord的Record/Fetch计划对对象进行异步操作。同时,本文还介绍了如何使用MagicalRecord的Record/Fetch计划对对象进行批量操作,以及使用MagicalRecord的Record/Fetch计划对对象进行分组操作。最后,本文还介绍了如何使用MagicalRecord的Record/Fetch计划对对象进行事务操作,以及使用MagicalRecord的Record/Fetch计划对对象进行缓存操作。
不得不承认KVC在开发过程中是神器一般的存在。如果正确灵活使用kvc,会使得整个开发过程轻松很多。简单而强大。
NSUserDefaults类,以字典形式保存数据,IOS会自动把字典中的键值对转换成对应的XML文件(也就是plist文件),这个文件会被保存到APP的沙盒目录中(路径为Library/Preferences/plist文件名)。
在iOS开发中,UIImageView类专门来负责图片数据的渲染,并且UIImageView也有帧动画的方法来播放一组图片,但是对于gif类型的数据,UIImageView中并没有现成的接口提供给开发者使用,在iOS中一般可以通过两种方式来播放gif动态图,一种方式是通过ImageIO框架中的方法将gif文件中的数据进行解析,再使用coreAnimation核心动画来播放gif动画,另一种方式计较简单,可以直接通过webView来渲染gif图。
在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField、UITextView与UIWebView。在这些控件的文字交互处进行长按手势可以在屏幕视图上唤出系统的剪切板控件,用户可以进行复制、粘贴,剪切等操作,其效果分别如下图所示。
如果产品经理突然说:"在所有页面添加统计功能,也就是用户进入这个页面就统计一次"。我们会想到下面的一些方法:
蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单。相关的蓝牙操作由专门的CoreBluetooth.framework进行统一管理。通过蓝牙进行通讯交互分为两方,一方为中心设备central,一方为外设peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据交互。
背景:这里有些关于编码风格Apple官方文档,如果有些东西没有提及,可以在以下文档来查找更多细节:
最近研究了iOS下连接蓝牙打印机,实现打印购物小票的功能,对iOS中BLE 4.0的使用有了一定的了解,这里记录一下对BLE 4.0的理解。 由于很多文章同时讲CBCentralManager和CBPeripheralManager,所以很容易傻傻分不清楚。很少把iPhone作为蓝牙外设在广播发送数据的情形,今天我就从iOS app开发的角度讲一些BLE 4.0的使用。
也好久没来写博客了,主要是最近也工作了,手头的事有点多,一时间也就断了,闲下来了我就来补博客了,刚好最近也做了很多东西,放在这里也算给自己做个笔记吧。
54.jpg 很久没更新文章了,由于最近公司项目比较赶,所以....... 下面可以看到一个菜鸟的进化史哦。赶紧围观吧。 字典转模型在我还是菜鸟的时候,说实话,老老实实在模型里面写的如下代码 1.手动解析 //手动解析 - (instancetype)initWithDic { self = [super init]; if (self) { xxx = dic[@"xxx"]; ... } return self; } 2.KVC解析 /
-- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 String 开头的方法;
把包装类型转换成简单数据类型称为unboxing(示例:Integer i=1,int p=i;//将包装类Integer转化成简单数据类型int)
KVO使用三部曲:添加/注册KVO监听、实现监听方法以接收属性改变通知、 移除KVO监听。
在上一篇博客中,介绍了iOS中使用CoreData框架设计数据模型的相关步骤。CoreData框架中通过相关的类将数据——数据模型——开发者无缝的衔接起来。NSManagedObjectModel对应数据模型,即上篇博客中我们创建的.xcdatamodeld文件;NSPersistentStoreCoordinator相当于数据库与数据模型之间的桥接器,通过NSPersistentStoreCoordinator将数据模型存入数据库;NSManagedObjectContext是核心的数据管理类,开发者通过操作它来执行对数据的相关操作。
单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷。因为互联网一定要有危机意识,说不定眼一睁,我们就欧了 。
NSData* originData = [originStr dataUsingEncoding: NSASCIIStringEncoding];
不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。根据要存储的的数据的大小、存储性质以及存储类型,在iOS和Android中哪个都有多种存储方式。其中,iOS中的存储方式主要包括以下六类: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 手动存放沙盒 一、沙盒机制 在研究存储方式之前,我们有必要先研究下这些文件会存储到什么地方去
Qt/C++开发人员眼中的Obj-C 对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这篇博客的内容,我将描写叙述诸多我所学到的东西.这将很多其它的是大脑转存而不是单一的教程 ,所以我仍然希望这将对你非常有帮助,我将首先写编程语言的差异,然后再写关于类库的差异 1.Objective C vs C vs C++ 类似于C++,Obj-c是C语言的一个超集(这不是100%正确的,可是一个足够好的语句来理解它),您将使用的文件扩展名的头.h和.m来表示Obj-C语法 注意还有obj- c++文件扩展名.mm,尽管我如今还不会写. 类似于塞班c++,Obj-C是使用两个阶段进行构造:首先你在堆上分配对象,然后调用init方法. 通常能够避免调用两个方法和仅仅使用一个静态简便的方法,直接给你一个新分配的对象(比如stringWithCString). 全然不同(起初很分散)是Obj-C函数的调用方法,类似通常的C-ish方式,比如NSLog(@“我的日志消息”);但也有Obj-C语法对象的调用方法。 作为一个样例,这是对象有一个方法包括两个參数:obj(obj methodName:param1value param2:param2Value]。看起来非常奇怪甚至别扭,但你要去适应它。 在Objective C,这是通常被称为发送消息,不不过它的调用方法,还有好多我发现更加混乱. 在上面这种方法演示样例,methodName是所谓的选择器。一个选择器是一个方法的标识符。有时你必须识别方法(类似于一个函数指针), 在上面的样例中你能够这样写@selector(methodName:param2:). 在c++中没有根对象和Qt QObject仅用于一些对象,Objective C有强制性的根对象NSObject . 相反Qt你想信号/插槽,你仅仅用QObject类,而Obj-c这里你用NSObject做不论什么事情. 自从iOS 5 实现ARC(自己主动引用计数),觉得它像一个隐式QSharedPointer在你的对象。编码过程感觉到你有一个垃圾收集器。在内部,ARC告诉编译器插入保留(添加引用计数)和释放(减量引用计数和终于销毁)语句在您的代码中。 我觉得这是非常棒的,假设你坚持正常的做事的方式你基本上能够不再再操心内存泄漏. Objective C属性类似于Qt中的Q_PROPERTY,这意味着您能够使用好obj.var = foo语法在代码内部(obj setVar:foo)消息称为(好吧. .消息发送)。您能够创建一个属性@property和编译器使用@synthesize为你做一个getter / setter。 当然也能够定制getter / setter实现很多其它的内部逻辑,比如实现延迟初始化。 你能想象Objective C托付作为一组插槽。托付对象的一个托付方法被对象调用通知某些事情已经发生。这很类似于Java的接口 2.与Qt相关类相类似的东西 与语法一样重要是相关的库所提供的iOS(和OS X)。请继续阅读,了解他们提供的对象和功能。 NSString对象是一个常量字符串。您还能够创建通过@“followed by me”。
NSUserDefaults简介 在Android和ios都提供了本地轻量级数据存储,底层实现都是基于key-value的方式。Android里面的叫SharedPreferences,ios的叫NSUserDefaults,使用上也是非常的简单。我们先看一看NSUserDefaults的API。 #import <Foundation/NSObject.h> @class NSArray<ObjectType>, NSData, NSDictionary<KeyValue, ObjectValue>,
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: 1. Foundation概述 2. 常用结构体 3. 日期 4. 字符串 5. 数组 6. 字典 7. 装箱和拆箱 8. 反射 9. 拷贝 10. 文件操作
对于如果导入是UIKit类就使用UIKIT_EXTERN 如果是Founction使用关键词FOUNDATION_EXTERN
大名鼎鼎的AFNetWorking,做iOS开发的人都知道吧。 AFNetWorking一款轻量级网络请求开源框架,基于iOS和mac os 网络进行扩展的高性能框架,大大降低了iOS开发工程师处理网络请求的难度,让iOS开发变成一件愉快的事情。
花了一个月的时间结合几篇博客和书籍写了这套 iOS 代码规范(具体参考底部的参考文献部分)。这套代码规范除了有仅适用于 iOS 开发的部分,还有其他的比较通用性的规范(控制语句,注释等等)。
1. 序列帧动画实现 1方式1: [UIImage animatedImageWithImages:**动画图片数组** duration:**持续时间**]; // 可以获取一个能做动画的UIImage对象"gif图片" 2 方式2: self.imageView.animationImages = array; // 装图片的数组(需要做动画的图片数组) self.imageView.animationDuration = 2; // 动画时间 self.imageView.animationRep
一个iOS开发初级菜鸡.png Swift 基本语法01-Swift简介 Swift 基本语法02-"let"和"var" Swift 基本语法03-"if let"和"guard let" Swift 基本语法04-"switch"和"for" Swift 基本语法05-"String" 一、数组的定义 1.1 Swift与OC一样,使用[]定义数组, 区别: 1> Swift没有@符号 2> 中文也可以正常输出 3> 而且可以根据数组中的内容自动推导出数组的类型(和OC中的数组指定泛型类似
与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController进行管理。
本人以前写过一个数据模型存储方法,是我在上上家公司做缓存框架的时候写的,具体也就是在FMDB的基础上封装,直接对数据模型进行存储操作,如下:
领取专属 10元无门槛券
手把手带您无忧上云