OC-NSData 學習筆記

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;
相關文章
相關標籤/搜索