基本上所有的原生的类都是实现了NSCoding协议,摘要即时通讯云网易云信于2018年01月04日发布4.6版

摘要即时通讯云网易云信于2018年08月07日发布5.5版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为
5.5版,更新时间为:2018年08月07日。iOS
更新内容新增NIMSDK设置新增NOS资源场景配置字段@interface NIMSDK :
NSObject@property (nonatomic,strong) NSMutableDictionary
*sceneDict;@end资源管理新增对场景支持的资源上传接口@protocol
NIMResourceManager <NSObject>- (void)upload:(NSString *)filepath
scene:(NSString *)scene progress:(nullable
NIMHttpProgressBlock)progress completion:(nullable
NIMUploadCompleteBlock)completion;@end图片实例对象新增场景初始化接口@interface
NIMImageObject : NSObject- (instancetype)initWithImage:(UIImage*)image
scene:(NSString *)scene;- (instancetype)initWithFilepath:(NSString
*)filepath scene:(NSString *)scene;-
(instancetype)initWithData:(NSData *)data extension:(NSString
*)extension scene:(NSString
*)scene;@end视频实例对象新增场景初始化接口@interface NIMVideoObject :
NSObject- (instancetype)initWithSourcePath:(NSString *)sourcePath
scene:(NSString *)scene;- (instancetype)initWithData:(NSData *)data
extension:(NSString *)extension scene:(NSString
*)scene;@end语音实例对象新增场景初始化接口@interface NIMAudioObject :
NSObject- (instancetype)initWithSourcePath:(NSString *)sourcePath
scene:(NSString *)scene;- (instancetype)initWithData:(NSData *)data
extension:(NSString *)extension scene:(NSString
*)scene;@end文件实例对象新增场景初始化接口@interface NIMFileObject :
NSObject- (instancetype)initWithSourcePath:(NSString *)sourcePath
scene:(NSString *)scene;- (instancetype)initWithData:(NSData*)data
extension:(NSString*)extension scene:(NSString
*)scene;@end语音实例对象新增音频MD5字段@interface NIMAudioObject :
NSObject@property (nullable,nonatomic, copy, readonly) NSString
*md5;@end图片实例对象新增图片MD5字段@interface NIMImageObject :
NSObject@property (nullable,nonatomic, copy, readonly) NSString
*md5;Android 更新内容新增1. NOS场景配置2. 发送消息时可以指定 NOS 场景3.
上传文件时可以指定 NOS 场景Windows(PC) SDK
更新内容新增文件上传增加“场景”信息使用5.5版本及其以上SDK(PC端、移动端、web端)实现的客户端(简称:5.5+
SDK),向使用PC5.4及其以下版本SDK实现的客户端(简称:PC 5.4-
SDK),发送图片消息且客户端开启下载缩略图功能时(即:5.5+ SDK 向 PC 5.4-
SDK(preloadattach=true),发送图片消息),接收到的缩略图片可能是原图。建议升级SDK到5.5及其以上版本或者在UI层对缩略图做缩放处理。本地数据文件(*.db)备份功能修复Windows
x64 下http库可能引起的崩溃Web SDK
更新内容新增IM,chatroom初始化增加文件存储配置IM,chatroom发送文件消息增加文件存储配置下载地址请从以下官网地址下载:

1.系统自带的解析方法

摘要即时通讯云网易云信于2018年01月04日发布4.6版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为
4.6版,更新时间为:2018年01月04日。iOS
更新内容新增新增在后台自动执行重连开关@interface NIMSDKConfig :
NSObject/** * 是否禁止后台重连 * @discusssion 默认为
NO。即默认情况下,当程序退到后台断开连接后,如果 App 仍能运行,SDK
将继续执行自动重连机制。设置为 YES
后在后台将不自动重连,重连将被推迟到前台进行。 *
只有特殊用户场景才需要此设置,无明确原因请勿设置。 */@property
(nonatomic,assign) BOOL
reconnectInBackgroundStateDisabled;@end新增聊天室历史记录拉取可以按类型筛选字段/**
* 检索服务器历史消息选项 (服务器) */@interface
NIMHistoryMessageSearchOption : NSObject/** * 查询的消息类型 *
@discusssion 消息类型组合,默认为 nil ,搜索全类型。
此参数只对聊天室会话有效 */@property (nonatomic,copy)
NSArray<NSNumber *>
*messageTypes;@end易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则,NIMAntiSpamOption新增字段
businessId。/** * 反垃圾选项 * @discussion
这个选项用于配置易盾反垃圾,设置 enabled 为 YES (默认为 NO)
后该消息进投递到易盾系统进行反垃圾检测 (需要开启易盾服务)
*/@interface NIMAntiSpamOption : NSObject/** *
用户在易盾配置的额外反垃圾的业务ID */@property
(nullable,nonatomic,copy) NSString
*businessId;@end新增聊天室队列权限修改,NIMChatroomUpdateTag中新增字段
NIMChatroomUpdateTagQueueModificationLevel修正聊天室缓存用户扩展信息,保证掉线重连后不清除Android
更新内容新增1. 易盾反垃圾支持对单条消息配置对应的反垃圾业务规则。2.
新增支持海外推送 FCM 以及魅族推送。3. 支持配置聊天室队列管理权限。4.
支持群管理员撤销其他人消息。5. 支持视频消息获取远程缩略图 url。6.
聊天室历史记录拉取可按类型筛选。变更1. 修复酷派偶现崩溃问题。2.
接口变更:List<NimRobotInfo> getRobotInfo(List<String>
accounts);改为List<NimRobotInfo>
getRobotInfoList(List<String>
accounts);3.MessageNotifierCustomization新增消息撤回通知文案自定义接口:/**
* 定制消息撤回提醒文案 * @param revokeAccount 撤回操作者账号 * @param
item 被撤回的消息 * @return */String makeRevokeMsgTip(String
revokeAccount, IMMessage
item);4.ChatRoomPartClearAttachment附件内容变更getContentMap()返回由Map<String,Object>变为Map<String,
String>getChatRoomQueueChangeType()返回ChatRoomQueueChangeType.PARTCLEARWindows(PC)
SDK
更新内容新增群主或群管理员可以撤回其他群成员发送的消息的功能用户配置的对某单条消息另外的反垃圾的业务ID的功能视频消息主动获取封面功能NOS域名迁移NOS加速地址,上传、下载地址等统一配置聊天室历史记录拉取可以按类型筛选功能聊天室队列权限可配置聊天室更新用户信息后,断线重连进入聊天室时,相应信息依旧还在的功能Web
SDK
更新内容新增聊天室队列管理权限可配置聊天室历史记录拉取可以按类型筛选群管理员可以撤回其他人发的消息易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则变更WebSocket链路若因网络状态不佳,悄悄被踢,将自动重连,不再由上层做处理WebSocket握手重连优化,清除实例接口下载地址请从以下官网地址下载:

NSCcoding是一个协议,基本上所有的原生的类都是实现了NSCoding协议,在归档的过程中进行了转码,所以才可以归档成功。

NSData

#import<UIKit/UIKit.h>

@protocol NSCoding

– (void)encodeWithCoder:(NSCoder *)aCoder;

– (nullable instancetype)initWithCoder:(NSCoder *)aDecoder; //
NS_DESIGNATED_INITIALIZER

@end

NSData全部API解释

@interface ViewController : UIViewController

NSCcoding协议两个必须实现的方法!

//base64编码中的一些设置选择

@property(strong,nonatomic) NSMutableArray *arrM;

  而且NSCoding多用于对自定义的类的实体对象进行归档,比如写一个student类

typedef NS_OPTIONS(NSUInteger, NSDataBase64EncodingOptions) {

@property(strong,nonatomic) NSMutableDictionary *dicM;

@interface Student : NSObject@property (nonatomic , retain) NSString
*name;

NSDataBase64Encoding64CharacterLineLength = 1UL << 0,

NSDataBase64Encoding76CharacterLineLength = 1UL << 1,

NSDataBase64EncodingEndLineWithCarriageReturn = 1UL << 4,

NSDataBase64EncodingEndLineWithLineFeed = 1UL << 5,

@property(strong,nonatomic) NSString *str;

@property (nonatomic , retain) NSString *ID;

} NS_ENUM_AVAILABLE(10_9, 7_0);

@end

-(Student *)initWithName : (NSString *)newName

//base64在解码过程中的option可选条件,下面选项表示在将诶吗过程中忽略不能识别的字节

#import “ViewController.h”

and : (NSString *)newID;

typedef NS_OPTIONS(NSUInteger, NSDataBase64DecodingOptions) {

@interface ViewController ()

@end

NSDataBase64DecodingIgnoreUnknownCharacters = 1UL << 0 

@end@implementation ViewController

Student类需要实现协议NSCoding,.m文件中是这样的:

} NS_ENUM_AVAILABLE(10_9, 7_0);

– (void)viewDidLoad {

@implementation Student

/****************
Immutable Data不可变的Data****************/

    [super viewDidLoad];

@synthesize name = _name,ID = _ID;

@interface NSData : NSObject <NSCopying, NSMutableCopying,
NSSecureCoding>

        //指定xml文件路径

//初始化学生类

//6.获取data长度的属性

    NSString *path = [[NSBundle mainBundle]
pathForResource:@”person” ofType:@”xml”];

-(Student *)initWithName:(NSString *)newName and:(NSString *)newID{

@property (readonly) NSUInteger length;

  //转换成data类型对象

self = [super init];

//7.返回data对象的首指针

  NSData *data = [NSData dataWithContentsOfFile:path];

if (self) {

@property (readonly) const void *bytesNS_RETURNS_INNER_POINTER;

    //为parser指定初始化

self.name = newName;

@end

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

self.ID = newID;

@interface NSData (NSExtendedData)

    //指定代理

}

//8.返回一个ASCII编码格式的字符串,采用的格式是data属性列表的格式。

    parser.delegate = self;

return self;

@property (readonly, copy) NSString *description;

    //实现文件xml解析 执行代理方法

}

//9.取出data中指定长度的字节存入buffer这个提前声明的数组中

    BOOL bol = [parser parse];

//学生类内部的两个属性变量分别转码

  • (void)getBytes:(void *)buffer length:(NSUInteger)length;

    //返回解析结果

-(void)encodeWithCoder:(NSCoder *)aCoder{

//9.取出data中指定位置range的字节存入buffer这个提前声明的数组中

  NSLog(@”%d”,bol);

[aCoder encodeObject:self.name forKey:@”name”];

  • (void)getBytes:(void *)buffer range:(NSRange)range;

      }

[aCoder encodeObject:self.ID forKey:@”ID”];

//10.判断两个data是否相等

/** *

}

  • (BOOL)isEqualToData:(NSData *)other;

  文档解析开始 初始化全局的集合

//分别把两个属性变量根据关键字进行逆转码,最后返回一个Student类的对象

//11.截图data指定位置的子data

* *  @param parser

-(id)initWithCoder:(NSCoder *)aDecoder{

  • (NSData *)subdataWithRange:(NSRange)range;

*/

if (self = [super init]) {

//12.将data写入指定的文件

– (void)parserDidStartDocument:(NSXMLParser *)parser{

self.name = [aDecoder decodeObjectForKey:@”name”];

  • (BOOL)writeToFile:(NSString *)path
    atomically:(BOOL)useAuxiliaryFile;

    self.arrM = [NSMutableArray array];

self.ID = [aDecoder decodeObjectForKey:@”ID”];

//13.将data写入指定的url

}

}

  • (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

/** *  文档解析结

return self;

//14.将data写入指定文件,并且有写入过程的设置条件,带错误信息

* *  @param parser

}

  • (BOOL)writeToFile:(NSString *)path
    options:(NSDataWritingOptions)writeOptionsMask error:(NSError
    **)errorPtr;

*/

@end

//15.将data写入指定的url,并且有写入过程的设置条件,带错误信息

相关文章

Leave a Comment.