,一般为YES展开 Documents: 需要保存由应用程序本身产生的文件或者数据,例如:游戏进度、涂鸦软件的绘图 目录中的文件会被自动保存在 iCloud 注意:不要保存从网络上下载的文件,否则会无法上架...路径获取: 通过NSUserDefaults类存取该目录下的设置信息 ---- 三、使用方法 1、属性列表 属性列表是一种XML格式的文件,拓展名为plist,如果对象是NSString、NSDictionary...、NSArray、NSData、NSNumber等类型,就可以使用, 注意:不能存储自定义对象,会失败的 存方法:writeToFile 读方法:如字典, dictionaryWithContentsOfFile...所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了,为解决上述问题,通过调用synchornize方法强制写入。...,默NSString、NSDictionary、NSArray、NSData、NSNumber等类型已遵守NSCoding协议,可以直接归档解档。
扩展相应的字段 Key,为相应的字段 Key 设置值 Value,这便是 IMSDK 字段的使用方式 "消息自定义字段" 有些不一样,请翻至对应的章节详阅 控制台添加自定义字段 1)进入控制台打开 "应用配置...,value是NSData类型或者NSNumber类型, key值按照后台配置的字符串传入,不包括 TIMProfileTypeKey_Custom_Prefix 前缀 好友自定义字段 相关 API /...- (TIMFriend \*)queryFriend:(NSString \*)identifier // 获取缓存中的关系链列表 - (NSArray \*)queryFriendList...,value是NSData类型或者NSNumber类型, key值按照后台配置的字符串传入,不包括 TIMFriendTypeKey_Custom_Prefix 前缀 群成员维度自定义字段 相关 API...,不会同步到 Server,更换终端或删除消息将不会再获取到 setCustomInt 和 setCustomData 这个接口的调用时机是需要发送成功之后调用 注意事项 TIMMessage 对象只会返回
如果self.validatesDomainName == YES,需要验证域名,那么调用下面函数,这个函数是Security框架中的,是苹果原生的,返回值类型为SecPolicyRef,将该返回值加入到策略数组...如果需要验证domain,那么就使用SecPolicyCreateSSL函数创建验证策略,其中第一个参数为true表示验证整个SSL证书链,第二个参数传入domain,用于判断整个证书链上叶子节点表示的那个...== NO,不需要验证域名,那么调用下面函数,这个函数是Security框架中的,是苹果原生的,返回值类型为SecPolicyRef,将该返回值加入到策略数组policies中。...使用certificatesInBundle从你的目标加载证书,然后通过调用policyWithPinningMode:withPinnedCertificates来创建一个新的策略。...只要公钥是正确的,就能保证通信不会被窃听,因为中间人没有私钥,无法解开通过公钥加密的数据。
1.1 目录结构分析 1.2 应用沙盒目录的获取方式 1.3 偏好设置(standardUserDefaults 的使用) 1.4 存储自定义类型对象到NSUserDefaults 2.1 什么是Keychain...2.2 案例:存储UUID来解决设备唯一标识符获取方案 2.3 iOS安全之敏感逻辑的保护方案 4.1 例子:存储自定义类型 4.2 NS_DESIGNATED_INITIALIZER 宏的使用 4.3...归档NSArray 5.1 FMDB例子 5.2 例子2:利用NSData归档2个Person对象到同一文件中 5.3 例子3:利用NSData实现深copy 6.1 基本用法 6.2 数据库缓存性能进行优化...日志输出 开关 7.9、coredata 的延迟加载 7.10、NSManagedObject子类 前言 iOS应用数据存储的常用方式 1、preference偏好设置 2、XML属性列表归档(plist...NSUserDefaults 自定义的类型需要转成NSData再存 setObject NSData *data = [NSKeyedArchiver archivedDataWithRootObject
NSUserDefaults为我们封装了读写plist文件的常用操作,我们可以使用它来保存一些简单的数据,比如系统配置,用户设置的参数之类的。...B为我们自己创建的的 plist文件,默认是在 Documents下。...值得注意的地方 NSUserDefault 支持的存储类型有:NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat...NSUserDefaults是单例,同时也是线程安全的 NSUserDefaults 的使用 简便方法存取不同类型数据 由上边的例子可以看到一个方法-setInteger:,这跟常用的-setObject...如果你想存储其他类型的对象,我们可以将其归档并创建一个NSData来实现存储。
//该方法在不退出应用程序的前提下调用短信和邮箱,以下内容请在真机测试 //导入框架MessageUI.framework #import “ViewController.h” //首先导入头文件...controller [self presentModalViewController:mailPicker animated:YES]; }else{ //如果该设备不支持在不退出程序的前提下调用邮件...,则会推出应用程序并调用系统邮件,mailto://为固定写法后面加邮箱地址 [[UIApplication sharedApplication] openURL:[NSURL URLWithString...[self presentModalViewController:picker animated:YES]; } } else { //如果该设备不支持在不退出程序的前提下调用短信...,则会推出应用程序并调用系统短信,mailto://为固定写法后面加手机号码 [[UIApplication sharedApplication] openURL:[NSURL URLWithString
装箱和拆箱 其实从上面的例子中我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的(也就是说有些NSObject的方法是无法调用的...NSNumber,可以包装基本类型但是无法包装结构体类型 NSNumber *number1=[NSNumber numberWithChar:'a'];//'a'是一个C语言的char类型我们无法放倒...; //动态调用一个方法,注意如果有参数那么参数类型只能为ObjC对象,并且最多只能有两个参数 /*反射*/ //动态生成一个类 NSString *className...那么如果我们非要使用NSMutabeString同时不使用属性的copy参数如何解决这个问题呢?...xml属性列表 首先我们先来看一下xml属性列表,xml属性列表进行归档的方式是将对象存储在一个plist文件中,这个操作起来比较简单,其实相当于xml序列化。
NSArray是不可变的,NSMutableArray是可变的。二者在类型上是不同的。如果需要操作数组还是用NSMutableString,这个版本的array。...-来自360doc NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛。...通过使用NSFileManager类来管理和操作文件、目录,NSFileManager,文件或目录是使用文件的路径名的唯一标示。...如果指定为NULL的话就会使用默认的行为,返回值是BOOL类型的方法,操作成功返回YES反之返回NO 判断文件是否被删除 if([fm removeItemAtPath:@"filename" error...属性字典允许你指定要创建的文件的权限,如果将该参数指定为nil,该文件会被设置为默认权限。
通过蓝牙进行通讯交互分为两方,一方为中心设备central,一方为外设peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据交互。...//字典中支持的键值如下 /* NSString * const CBCentralManagerOptionShowPowerAlertKey 对应一个NSNumber类型的bool值,用于设置是否在关闭蓝牙时弹出用户提示...+ (CBPeripheralManagerAuthorizationStatus)authorizationStatus; //初始化并设置代理 参数的具体含义与中心设备管理中心 - (instancetype... 如下 /* 对应设置NSString类型的广播名 NSString *const CBAdvertisementDataLocalNameKey; 外设制造商的NSData数据 NSString *const...:(NSArray *)invalidatedServices NS_AVAILABLE(NA, 7_0); //信号强度改变时调用的方法 - (void)peripheralDidUpdateRSSI
第3个方法创建的剪切板等价为使用第2个方法创建的剪切板,只是其名称字符串为nil,它通常用于当前应用内部。...注意:使用第3个方法创建的剪切板默认是不进行数据持久化的,及当应用程序退出后,剪切板中内容将别抹去。若要实现持久化,需要设置persistent属性为YES。... *)pasteboardType; //为剪切板中最新数据对应的某一数据类型设置数据 - (void)setData:(NSData *)data forPasteboardType:(NSString...:(nullable NSIndexSet *)itemSet; //根据数据类型获取一组数据的NSData数据 - (nullable NSArray *)dataForPasteboardType:...,这些参数是系统定义好的一些字符窜,如下: //所有字符串类型数据的类型定义字符串数组 UIKIT_EXTERN NSArray *UIPasteboardTypeListString
定义了不匹配的类型,那么数据仍旧会解析错误。...和domain两个参数分别为NSURLErrorCannotDecodeContentData、AFURLResponseSerializationErrorDomain,这两个参数是我们之前判断response...可接受类型和code时候自己去生成错误的时候填写的。...2.因为跟代理相关的一些操作AF都使用了NSLock。所以就算Queue的并发数设置为n,因为多线程回调,锁的等待,导致所提升的程序速度也并不明显。...而设置Queue的并发数为1,(注:这里虽然回调Queue的并发数为1,仍然会有不止一条线程,但是因为是串行回调,所以同一时间,只会有一条线程在操作AFUrlSessionManager的那些方法。)
前言 网络框架 本文一开始上传图片以调用HYNetworking的API为例,这个网络框架是以AFNetworking为基础进行的封装。...isEqualToString:[dic objectForKey:@"id_card_number"]]) { [Toast showBottomWithText:@"您使用的身份证与您实名的身份证不一致...:mimeType]; 这里是设置图片的数据流,作为AFNetwork的POST请求方法的一个constructingBodyWithBlock参数的输入。...将描述图片的参数字符串转化头字典 - (void)appendPartWithFileData:(NSData *)data name:(NSString...*)fileData 调用示例 - (NSString *_Nullable)uploadWithUploadImageModels:(nullable NSArray<UploadImageModel
你也可以称他为对象序列化,对象持久化。...数据持久性的方式 NSKeyedArchiver --- 对象归档 NSUserDefaults 属性列表化(NSArray、NSDictionary保存文件) SQlite数据库、Core Data数据库...归档的形式 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档后的文件是加密的,属性列表是明文的。...属性列表也不能对自定义对象进行保存。...NSData 实例作为归档的存储数据 添加归档的内容(设置key与value) 完成归档 将归档数据存入磁盘中 解归档 从磁盘读取文件,生成 NSData 实例 根据 Data 实例创建和初始化解归档实例
Android里面的叫SharedPreferences,ios的叫NSUserDefaults,使用上也是非常的简单。我们先看一看NSUserDefaults的API。...#import @class NSArray, NSData, NSDictionary的数据类型有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL。...initWithDictionary: [[NSUserDefaults standardUserDefaults]dictionaryRepresentation]]; NSUserDefaults只能存储一些简单的数据类型...,如果要存取一些复杂类型的数据(例如实体类),就需要对数据进行归档后转为NSData后存取。
以下列几个比較常见的用途: 传文件 聊天室 一台设备作为数据採集外设(比方:摄像头),将实时数据导到还有一台设备上 网络数据转发 … 多点连接 API 的使用 SDK及版本号信息 MultipeerConnectivity.framework...关于使用大家能够看看參考资源与 MCDemo, 这里仅仅是做一个代码导读。...如:”Proteas-iPhone5s” 设备间交换ID时须要进行序列化, 序列化的方法为:-[MCPeerID serializedRepresentation] 总结起来就是:PeerID...我们没有做过多说明, 接下来我们大概看看 Data Key 的生成: 在初始化一个多点连接的 Session 时,我们能够指定加密方式, 这个加密方式是个枚举类型: MCEncryptionOptional...安全性分析 前文中也提到了,安全性的控制是在初始化 MCSession 时控制的, 默认是使用 MCEncryptionOptional。
(第一个参数)和指定的作用域(第二个参数)以及 BOOL 类型的参数来确定是否返回完整路径,该函数的返回值类型为数组。...// 数据持久化常用的文件夹为 Documents 。....app文件(与之对应的类为 NSBundle ),工程中的资源文件会保存在这个.app文件中,此.app文件是只读的,我们通常叫他应用程序包。...NSData 类型的数据 (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.name forKey:@"NAME...NSData类型的数据转成当前类的对象时调用的。
刚才我们只是简单了通过原生调用了一段JS代码,但是如果Native在调JS方法时无法传参那也太low了,我们可以直接将要传递的参数格式化到字符串中,修改main.js文件如下: function put...同样,如果声明的block是带参数的,JS在调用此OC方法时也需要传入参数,如果block有返回值,则在JS中也能获取到返回值,例如: BOOL (^block)(NSString *) = ^...//获取当前执行函数的参数列表,当JS调用OC方法时,在OC方法中可以用此方法获取到执行的函数的参数列表 + (NSArray *)currentArguments; //获取当前JS运行环境的全局对象...在Objective-C中调用JS脚本或者JS调用OC方法都可以使用JSValue来传输数据。...是一个构造方法对象 可以调用此方法 和JavaScript中使用new关键字一致 - (JSValue *)constructWithArguments:(NSArray *)arguments; //
SDWebImage的代码结构基本可以分为3块:应用层类别、核心功能类、工具类与类别。其中我们最常使用的是应用层的类别。例如UIImageView的图片加载,UIButton的图片加载等。...一、帮助类与类别的解析 1.NSData+ImageContentType 这个类别是一个图片数据的格式帮助类,使用它可以方便的获取图片数据的图片格式,其中枚举了常用的图片格式如下: typedef...//数据是否可以进行解码 除了webp类型的 其他类型的图像都可以解码 - (BOOL)canDecodeFromData:(nullable NSData *)data; //进行图片数据解码 - (...- (BOOL)canEncodeToFormat:(SDImageFormat)format; //将图片编码为数据 - (nullable NSData *)encodedDataWithImage...开发者可以使用单例方法来获取默认的SDImageCache实例,也可以使用特殊的Name值来创建缓存实例,常用函数列举如下: //缓存图片到内存和磁盘 - (void)storeImage:(nullable
,AFURLResponseSerialization协议被一个对象采用,该对象将数据解码为更有用的对象表示。...BOOL的方法,但是这里对于返回值并没有使用。...@abstract返回接收者的MIME类型。 @讨论MIME类型基于提供的信息 来源。...*error = validationError; 这个方法就是来判断返回数据与咱们使用的解析器是否匹配,需要解析的状态码是否匹配。...如果需要移除这个键并且上面的responseObject已经序列化成功,那么就要调用下面的函数移除具有NSNull值的键。
领取专属 10元无门槛券
手把手带您无忧上云