ios开发之NSData

NSData用于保存字节数组。

初始化

- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;

初始化对象。
不进行复制字节数组操作,直接设置字节指针为bytes,长度为length。

- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;

初始化对象。
不进行复制字节数组操作,直接设置字节指针为bytes,长度为length。

- (instancetype)initWithBytes:(nullable const void *)bytes length:(NSUInteger)length;

初始化对象。
复制字节数组,设置字节指针指向复制的字节数组,长度为length。

- (nullable instancetype)initWithContentsOfFile:(NSString *)path;

读取文件内容初始化对象。
读取成功则返回对象,如果失败则返回nil。

- (nullable instancetype)initWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr;

读取文件内容初始化对象。
读取成功则返回对象。如果失败则返回nil,错误信息保存在errorPtr中。
参数readOptionsMask 指定文件读取选项。

typedef NS_OPTIONS(NSUInteger, NSDataReadingOptions) {
    NSDataReadingMappedIfSafe =   1UL << 0,
    NSDataReadingUncached = 1UL << 1,
    NSDataReadingMappedAlways  = 1UL << 3,

    NSDataReadingMapped = NSDataReadingMappedIfSafe,
    NSMappedRead = NSDataReadingMapped,
    NSUncachedRead = NSDataReadingUncached
};

- (nullable instancetype)initWithContentsOfURL:(NSURL *)url;

读取url内容初始化对象。
读取成功则返回对象,如果失败则返回nil。

- (nullable instancetype)initWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr;

读取url内容初始化对象。
读取成功则返回对象。如果失败则返回nil,错误信息保存在errorPtr中。
参数readOptionsMask 指定文件读取选项。

- (instancetype)initWithData:(NSData *)data;

根据NSData对象初始化对象。

- (nullable id)initWithContentsOfMappedFile:(NSString *)path

根据文件内容初始化对象。读取文件内容的方式不是read系统调用,而是mmap系统调用。

构造

+ (instancetype)data;

构造空的NSData对象。

+ (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;

根据字节数组构造对象。不复制字节数组。

+ (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;

根据字节数组构造对象。不复制字节数组。

+ (instancetype)dataWithBytes:(nullable const void *)bytes length:(NSUInteger)length;

根据字节数组构造对象。复制字节数组。

 + (nullable instancetype)dataWithContentsOfFile:(NSString *)path;

根据文件内容构造对象。

+ (nullable instancetype)dataWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr;

根据文件内容构造对象。

 + (nullable instancetype)dataWithContentsOfURL:(NSURL *)url;

根据url内容构造对象。

+ (nullable instancetype)dataWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr;

根据url内容构造对象。

+ (instancetype)dataWithData:(NSData *)data;

根据NSData对象构造对象。

+ (nullable id)dataWithContentsOfMappedFile:(NSString *)path

根据文件内容构造对象。读取文件内容的方式不是read系统调用,而是mmap系统调用。

返回长度

@property (readonly) NSUInteger length;

返回数据

@property (readonly) const void *bytes

返回区间内的数据

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

参数buffer保存获取的数据,参数range指定获取数据的区间。

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

获取指定长度的数据。如果length大于数据长度,则使用数据长度作为指定长度。

- (void)getBytes:(void *)buffer

获取所有数据。

截取数据

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

参数range指定截取区间。

是否相等

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

比较数据是否相等。

写入文件

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

参数path指定文件路径。参数errorPtr在写入失败时保存出错信息。参数writeOptionsMask 表示写入文件时的可选项,可使用或运算符连接。其可能值为

typedef NS_OPTIONS(NSUInteger, NSDataWritingOptions) {
NSDataWritingAtomic = 1UL << 0,
NSDataWritingWithoutOverwriting NS_ENUM_AVAILABLE(10_8, 6_0) = 1UL << 1, 

NSDataWritingFileProtectionNone NS_ENUM_AVAILABLE_IOS(4_0)  = 0x10000000,
NSDataWritingFileProtectionComplete NS_ENUM_AVAILABLE_IOS(4_0)  = 0x20000000,
NSDataWritingFileProtectionCompleteUnlessOpen NS_ENUM_AVAILABLE_IOS(5_0)  = 0x30000000,
NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication NS_ENUM_AVAILABLE_IOS(5_0)  = 0x40000000,
NSDataWritingFileProtectionMask NS_ENUM_AVAILABLE_IOS(4_0)  = 0xf0000000,
NSAtomicWrite = NSDataWritingAtomic
};

NSDataWritingAtomic 表示使用辅助文件完成原子操作。
NSDataWritingWithoutOverwriting 表示防止覆盖现有文件,不能与NSDataWritingAtomic 结合使用。

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

写入文件。参数path指定文件路径,参数useAuxiliaryFile使用辅助文件完成原子操作。

写入url

- (BOOL)writeToURL:(NSURL *)url options:(NSDataWritingOptions)writeOptionsMask error:(NSError **)errorPtr;

参数path指定url路径。参数errorPtr在写入失败时保存出错信息。参数writeOptionsMask 表示写入时的可选项,可使用或运算符连接。

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

写入url。参数path指定文件路径,参数atomically完成原子操作。

搜索

- (NSRange)rangeOfData:(NSData *)dataToFind options:(NSDataSearchOptions)mask range:(NSRange)searchRange

搜索数据。参数dataToFind为搜索的数据。参数searchRange为搜索的区间。参数mask 为搜索的方式。搜索方式可使用或运算符连接。
搜索方式有:

typedef NS_OPTIONS(NSUInteger, NSDataSearchOptions) {
    NSDataSearchBackwards = 1UL << 0,
    NSDataSearchAnchored = 1UL << 1
}

NSDataSearchBackwards表示从后向前搜索。
NSDataSearchAnchored表示只是搜索头部或尾部(与NSDataSearchBackwards连用)。

与Base64编码相关

- (nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options

解码字符串。options为解码方式。

typedef NS_OPTIONS(NSUInteger, NSDataBase64DecodingOptions) {
    NSDataBase64DecodingIgnoreUnknownCharacters = 1UL << 0
} NS_ENUM_AVAILABLE(10_9, 7_0);

NSDataBase64DecodingIgnoreUnknownCharacters 表示忽略不知道的字符。

- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options

编码为字符串。参数options为编码方式。

typedef NS_OPTIONS(NSUInteger, NSDataBase64EncodingOptions) {
    NSDataBase64Encoding64CharacterLineLength = 1UL << 0,
    NSDataBase64Encoding76CharacterLineLength = 1UL << 1,
    NSDataBase64EncodingEndLineWithCarriageReturn = 1UL << 4,
    NSDataBase64EncodingEndLineWithLineFeed = 1UL << 5,

} NS_ENUM_AVAILABLE(10_9, 7_0);

- (nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options

解码数据。

- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options

编码数据。

- (nullable id)initWithBase64Encoding:(NSString *)base64String

解码字符串。

- (NSString *)base64Encoding

编码为字符串。
NSMutableData用于保存可变字节数组。

返回数据

@property (readonly) void *mutableBytes

返回长度

@property NSUInteger length;

初始化

- (nullable instancetype)initWithCapacity:(NSUInteger)capacity;

根据容量大小初始化对象。

- (nullable instancetype)initWithLength:(NSUInteger)length;

根据长度初始化对象。数组全部清空为0。

构造

 + (nullable instancetype)dataWithCapacity:(NSUInteger)aNumItems;

根据容量大小构造对象。

 + (nullable instancetype)dataWithLength:(NSUInteger)length;

根据长度构造对象。

添加

- (void)appendBytes:(const void *)bytes length:(NSUInteger)length;

添加数组。

- (void)appendData:(NSData *)other;

添加数据。

替换

- (void)replaceBytesInRange:(NSRange)range withBytes:(const void *)bytes;

替换字节数组。

- (void)replaceBytesInRange:(NSRange)range withBytes:(nullable const void *)replacementBytes length:(NSUInteger)replacementLength;

替换字节数组。参数replacementLength指定替换数组的长度。

增加长度

- (void)increaseLengthBy:(NSUInteger)extraLength;

重置

- (void)resetBytesInRange:(NSRange)range;

重置区间内数据为0。

设置

- (void)setData:(NSData *)data;

原文地址:https://www.cnblogs.com/Free-Thinker/p/11412165.html

时间: 2024-12-25 17:46:38

ios开发之NSData的相关文章

iOS开发之Socket通信实战--Request请求数据包编码模块

实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncSocket来进行长连接连接和传输数据,该第三方地 址:https://github.com/robbiehanson/CocoaAsyncSocket,读者可以自行google或者baidu搜索 这个库的用法,网上有很多资料,而且用法不难. 在一些对Socket通信使用需求不是很高的应用中,比如需要

iOS开发之17个常用代码整理

1.判断邮箱格式是否正确的代码 //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&quo

iOS开发之XML解析

iOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

IOS开发之XML解析以及下拉刷新上拉加载更多的分享

IOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

iOS开发之AFNetworking开源库的使用

iOS开发之AFNetworking开源库的使用 1.简介 常见的处理网络请求方式 (1)NSURLConnection/NSURLSession (2)ASIHttpRequest 早期项目中比较常见, 由于作者不更新了 (3)AFNetworking 推荐使用, 项目中使用 (4)MKNetworkKit 试试 2.配置和使用 2.1 配置 库文件拖入工程中, 包含头文件 #import "AFNetworking.h" 2.2 使用 //演示AFNetworking的使用 //1

iOS开发之XML解析代码

iOS开发之XML解析代码 //1.加载和解析XML文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil]; NSData *data = [[NSData alloc] initWithContentsOfFile:path]; // GDataXMLDocument 表示XML文档对象 // initWithData 使用NSData初始化, 就是解析 GDataXMLDoc

【IOS开发之Objective-C】数据持久化--文件和归档

在OC中数据持久化的方式有多种,例如:写入一个文件再或是归档.写入文件的方式我们一般都可以直接读取文件中的数据.比如我把数据写进一个XX.txt文档里面.只有数据写入成功了我就可以直接读取这个文件了.但是这样对于一些用户关键的数据并不能起到保密的作用,如果需要保密还需要使用归档操作. 文件的操作 //首先声明一个字符串 NSString * str1 = @"123456789"; 方式一 直接使用方法: - (BOOL)writeToFile:(NSString *)path ato

IOS开发之copy的问题

copy的目的就是修改副本,修改原始对象和副本时不会产生干扰. 定义一个不可变属性A,再定义一个可变属性B.用B做添加删除等操作后再将B赋值给A时,有些人习惯用A = B:其实这样是不安全的. 假设有下面的一段代码: ? 1 2 3 4 5 6 7 8 9 10   int main() {    NSMutableString *strM = [NSMutableString [email protected]"123"];    NSString *str = strM;    N

iOS开发之WKWebView简单使用和常用使用场景

iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版.本着对新事物的好奇,就上网查了一下,但是找了好多个都没说的多了详细,于是就问谷歌,找文档,看看使用方法,试用了一下,果然不错,记录下来,大家分享! WKWebView的特点: 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷