NSData用於保存字節數組。
初始化數組
- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
初始化對象。
不進行復制字節數組操做,直接設置字節指針爲bytes,長度爲length。app
- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
初始化對象。
不進行復制字節數組操做,直接設置字節指針爲bytes,長度爲length。less
- (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。ide
- (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系統調用。編碼
構造atom
+ (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系統調用。
返回長度url
@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 1 解碼字符串。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;