NSKeyedUnarchiver
来源:互联网 发布:ado.net mysql 编辑:程序博客网 时间:2024/05/24 02:47
Next
Overview
NSKeyedUnarchiver, a concrete subclass of NSCoder, defines methods for decoding a set of named objects (and scalar values) from a keyed archive. Such archives are produced by instances of theNSKeyedArchiver class.
A keyed archive is encoded as a hierarchy of objects. Each object in the hierarchy serves as a namespace into which other objects are encoded. The objects available for decoding are restricted to those that were encoded within the immediate scope of a particular object. Objects encoded elsewhere in the hierarchy, whether higher than, lower than, or parallel to this particular object, are not accessible. In this way, the keys used by a particular object to encode its instance variables need to be unique only within the scope of that object.
If you invoke one of the decode... methods of this class using a key that does not exist in the archive, a non-positive value is returned. This value varies by decoded type. For example, if a key does not exist in an archive,decodeBoolForKey: returns NO, decodeIntForKey: returns 0, and decodeObjectForKey: returnsnil.
NSKeyedUnarchiver supports limited type coercion. A value encoded as any type of integer, whether a standard int or an explicit 32-bit or 64-bit integer, can be decoded using any of the integer decode methods. Likewise, a value encoded as a float or double can be decoded as either a float or a double value. If an encoded value is too large to fit within the coerced type, the decoding method throws anNSRangeException. Further, when trying to coerce a value to an incompatible type, for example decoding an int as a float, the decoding method throws anNSInvalidUnarchiveOperationException.
Tasks
Initializing a Keyed Unarchiver
- – initForReadingWithData:
Unarchiving Data
- + unarchiveObjectWithData:
- + unarchiveObjectWithFile:
- – setRequiresSecureCoding:
Decoding Data
- – containsValueForKey:
- – decodeBoolForKey:
- – decodeBytesForKey:returnedLength:
- – decodeDoubleForKey:
- – decodeFloatForKey:
- – decodeIntForKey:
- – decodeInt32ForKey:
- – decodeInt64ForKey:
- – decodeObjectForKey:
- – finishDecoding
Managing the Delegate
- – delegate
- – setDelegate:
Managing Class Names
- + setClass:forClassName:
- + classForClassName:
- – setClass:forClassName:
- – classForClassName:
Class Methods
classForClassName:
Returns the class from which NSKeyedUnarchiver instantiates an encoded object with a given class name.
+ (Class)classForClassName:(NSString *)codedName
Parameters
codedName
The ostensible name of a class in an archive.
Return Value
The class from which NSKeyedUnarchiver instantiates an object encoded with the class name codedName. Returnsnil if NSKeyedUnarchiver does not have a translation mapping for codedName.
Availability
- Available in OS X v10.2 and later.
See Also
- + setClass:forClassName:
- – classForClassName:
Declared In
NSKeyedArchiver.h
setClass:forClassName:
Adds a class translation mapping to NSKeyedUnarchiver whereby objects encoded with a given class name are decoded as instances of a given class instead.
+ (void)setClass:(Class)cls forClassName:(NSString *)codedName
Parameters
cls
The class with which to replace instances of the class named codedName.
codedName
The ostensible name of a class in an archive.
Discussion
When decoding, the class’s translation mapping is used only if no translation is found first in an instance’s separate translation map.
Availability
- Available in OS X v10.2 and later.
See Also
- + classForClassName:
- – setClass:forClassName:
Declared In
NSKeyedArchiver.h
unarchiveObjectWithData:
Decodes and returns the object graph previously encoded by NSKeyedArchiver and stored in a given NSData object.
+ (id)unarchiveObjectWithData:(NSData *)data
Parameters
data
An object graph previously encoded by NSKeyedArchiver.
Return Value
The object graph previously encoded by NSKeyedArchiver and stored in data.
Discussion
This method raises an NSInvalidArchiveOperationException if data is not a valid archive.
Availability
- Available in OS X v10.2 and later.
Related Sample Code
- iSpend
- iSpendPlugin
- MyMediaPlayList
Declared In
NSKeyedArchiver.h
unarchiveObjectWithFile:
Decodes and returns the object graph previously encoded by NSKeyedArchiver written to the file at a given path.
+ (id)unarchiveObjectWithFile:(NSString *)path
Parameters
path
A path to a file that contains an object graph previously encoded byNSKeyedArchiver.
Return Value
The object graph previously encoded by NSKeyedArchiver written to the file path. Returnsnil if there is no file at path.
Discussion
This method raises an NSInvalidArgumentException if the file at path does not contain a valid archive.
Availability
- Available in OS X v10.2 and later.
Related Sample Code
- SpriteKit Physics Collisions
Declared In
NSKeyedArchiver.h
Instance Methods
classForClassName:
Returns the class from which the receiver instantiates an encoded object with a given class name.
- (Class)classForClassName:(NSString *)codedName
Parameters
codedName
The name of a class.
Return Value
The class from which the receiver instantiates an encoded object with the class name codedName. Returnsnil if the receiver does not have a translation mapping for codedName.
Discussion
The class’s separate translation map is not searched.
Availability
- Available in OS X v10.2 and later.
See Also
- – setClass:forClassName:
- + classForClassName:
Declared In
NSKeyedArchiver.h
containsValueForKey:
Returns a Boolean value that indicates whether the archive contains a value for a given key within the current decoding scope.
- (BOOL)containsValueForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
YES if the archive contains a value for key within the current decoding scope, otherwiseNO.
Availability
- Available in OS X v10.2 and later.
Declared In
NSKeyedArchiver.h
decodeBoolForKey:
Decodes a Boolean value associated with a given key.
- (BOOL)decodeBoolForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The Boolean value associated with the key key. Returns NO if key does not exist.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeBool:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeBytesForKey:returnedLength:
Decodes a stream of bytes associated with a given key.
- (const uint8_t *)decodeBytesForKey:(NSString *)key returnedLength:(NSUInteger *)lengthp
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
lengthp
Upon return, contains the number of bytes returned.
Return Value
The stream of bytes associated with the key key. Returns NULL if key does not exist.
Discussion
The returned value is a pointer to a temporary buffer owned by the receiver. The buffer goes away with the unarchiver, not the containing autoreleasepool block. You must copy the bytes into your own buffer if you need the data to persist beyond the life of the receiver.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeBytes:length:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeDoubleForKey:
Decodes a double-precision floating-point value associated with a given key.
- (double)decodeDoubleForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The double-precision floating-point value associated with the key key. Returns0.0 if key does not exist.
Discussion
If the archived value was encoded as single-precision, the type is coerced.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeDouble:forKey: (NSKeyedArchiver)
- encodeFloat:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeFloatForKey:
Decodes a single-precision floating-point value associated with a given key.
- (float)decodeFloatForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The single-precision floating-point value associated with the key key. Returns0.0 if key does not exist.
Discussion
If the archived value was encoded as double precision, the type is coerced, loosing precision. If the archived value is too large for single precision, the method raises anNSRangeException.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeFloat:forKey: (NSKeyedArchiver)
- encodeDouble:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeInt32ForKey:
Decodes a 32-bit integer value associated with a given key.
- (int32_t)decodeInt32ForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The 32-bit integer value associated with the key key. Returns 0 if key does not exist.
Discussion
If the archived value was encoded with a different size but is still an integer, the type is coerced. If the archived value is too large to fit into a 32-bit integer, the method raises anNSRangeException.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeInt32:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeInt64ForKey:
Decodes a 64-bit integer value associated with a given key.
- (int64_t)decodeInt64ForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The 64-bit integer value associated with the key key. Returns 0 if key does not exist.
Discussion
If the archived value was encoded with a different size but is still an integer, the type is coerced.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeInt64:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeIntForKey:
Decodes an integer value associated with a given key.
- (int)decodeIntForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The integer value associated with the key key. Returns0 if key does not exist.
Discussion
If the archived value was encoded with a different size but is still an integer, the type is coerced. If the archived value is too large to fit into the default size for an integer, the method raises anNSRangeException.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeInt:forKey: (NSKeyedArchiver)
Declared In
NSKeyedArchiver.h
decodeObjectForKey:
Decodes and returns an object associated with a given key.
- (id)decodeObjectForKey:(NSString *)key
Parameters
key
A key in the archive within the current decoding scope. key must not benil.
Return Value
The object associated with the key key. Returns nil if key does not exist, or if the value for key isnil.
Availability
- Available in OS X v10.2 and later.
See Also
- encodeObject:forKey: (NSKeyedArchiver)
Related Sample Code
- With and Without Bindings
Declared In
NSKeyedArchiver.h
delegate
Returns the receiver’s delegate.
- (id<NSKeyedUnarchiverDelegate>)delegate
Return Value
The receiver’s delegate.
Availability
- Available in OS X v10.2 and later.
See Also
- – setDelegate:
Declared In
NSKeyedArchiver.h
finishDecoding
Tells the receiver that you are finished decoding objects.
- (void)finishDecoding
Discussion
Invoking this method allows the receiver to notify its delegate and to perform any final operations on the archive. Once this method is invoked, the receiver cannot decode any further values.
Availability
- Available in OS X v10.2 and later.
Related Sample Code
- With and Without Bindings
Declared In
NSKeyedArchiver.h
initForReadingWithData:
Initializes the receiver for decoding an archive previously encoded byNSKeyedArchiver.
- (id)initForReadingWithData:(NSData *)data
Parameters
data
An archive previously encoded by NSKeyedArchiver.
Return Value
An NSKeyedUnarchiver object initialized for for decoding data.
Discussion
When you finish decoding data, you should invoke finishDecoding.
This method throws an exception if data is not a valid archive.
Availability
- Available in OS X v10.2 and later.
Declared In
NSKeyedArchiver.h
setClass:forClassName:
Adds a class translation mapping to the receiver whereby objects encoded with a given class name are decoded as instances of a given class instead.
- (void)setClass:(Class)cls forClassName:(NSString *)codedName
Parameters
cls
The class with which to replace instances of the class named codedName.
codedName
The ostensible name of a class in an archive.
Discussion
When decoding, the receiver’s translation map overrides any translation that may also be present in the class’s map (seesetClass:forClassName:).
Availability
- Available in OS X v10.2 and later.
See Also
- – classForClassName:
- + setClass:forClassName:
Declared In
NSKeyedArchiver.h
setDelegate:
Sets the receiver’s delegate.
- (void)setDelegate:(id<NSKeyedUnarchiverDelegate>)delegate
Parameters
delegate
The delegate for the receiver.
Availability
- Available in OS X v10.2 and later.
See Also
- – delegate
Declared In
NSKeyedArchiver.h
setRequiresSecureCoding:
Indicates whether the receiver requires all unarchived classes to conform toNSSecureCoding.
- (void)setRequiresSecureCoding:(BOOL)flag
Parameters
flag
YES if the receiver requires NSSecureCoding; NO if not.
Discussion
If you set the receiver to require secure coding, it will throw an exception if you attempt to unarchive a class which does not conform toNSSecureCoding.
The secure coding requirement for NSKeyedUnarchiver is designed to be set once at the top level and remain on. Once enabled, attempting to callsetRequiresSecureCoding: with a value of NO will throw an exception. This is to prevent classes from selectively turning secure coding off.
Note that the getter is on the superclass, NSCoder. See NSCoder for more information about secure coding.
Availability
- Available in OS X v10.8 and later.
Declared In
NSKeyedArchiver.h
Constants
Keyed Unarchiving Exception Names
Names of exceptions that are raised by NSKeyedUnarchiver if there is a problem extracting an archive.
NSString *NSInvalidUnarchiveOperationException;
Constants
NSInvalidUnarchiveOperationException
The name of the exception raised by NSKeyedArchiver if there is a problem extracting an archive.
Available in OS X v10.2 and later.
Declared in NSKeyedArchiver.h.
Next
Copyright © 2013 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2013-09-17
Provide Feedback
- NSKeyedUnarchiver
- NSKeyedUnarchiver数据归档(很巴适)
- Foundation--NSKeyedArchiver与NSKeyedUnarchiver
- NSCoding NSKeyedArchiver NSKeyedUnarchiver
- iOS: NSKeyedUnarchiver的方法unarchiveObjectWithData:
- iOS: NSKeyedUnarchiver的方法unarchiveObjectWithFile:
- ios:NSKeyedArchiver/NSKeyedUnarchiver(归档/解档)
- 实现 简单 的文件 储存--NSKeyedUnarchiver
- 使用NSKeyedUnarchiver解压数据如何防止crash
- NSKeyedArchiver、NSKeyedUnarchiver 数据持久化归档
- NSKeyedArchiver/NSKeyedUnarchiver归档解归档的使用
- 使用[NSKeyedUnarchiver unarchiveObjectWithData:data]程序crash
- 使用NSKeyedArchiver归档和NSKeyedUnarchiver读档
- 使用[NSKeyedUnarchiver unarchiveObjectWithData:data]程序crash
- 30 Foundation框架之NSKeyedArchiver和NSKeyedUnarchiver
- IOS持久化之NSKeyedArchiver,NSKeyedUnarchiver
- iOS开发------本地存储-NSKeyedArchiver & NSKeyedUnarchiver(归档)
- ios ---对模型对象归档(NSKeyedArchiver、NSKeyedUnarchiver)
- C/C++内存分配
- 人脸检测和识别
- select函数用法
- 直方图均衡化
- 修改本机host下载android的sdk
- NSKeyedUnarchiver
- centos 安装python2.7
- Hibernate性能优化
- Codeforces Round #271 (Div. 2)
- struts2中<s:select>标签的使用
- 【UML】关联、依赖、泛化、实现等关系说明
- ORACLE笔记
- 六类UML图
- go中利用hmset替换hset来提高redis的存取效率及并发goroutine可能遇到的问题