NSKeyedUnarchiver
NSKeyedUnarchiver
, конкретный подкласс NSCoder
, определяет методы для декодирования ряда именованных объектов (и скалярные значения) от включенного архива. Такие архивы производятся экземплярами NSKeyedArchiver
класс.
Включенный архив кодируется как иерархия объектов. Каждый объект в иерархии служит пространством имен, в которое кодируются другие объекты. Объекты, доступные для декодирования, ограничиваются теми, которые были закодированы в непосредственном объеме определенного объекта. Объекты закодировали в другом месте в иерархии, не ли выше, чем, ниже, чем, или параллельный этому определенному объекту, доступны. Таким образом ключи, используемые определенным объектом закодировать его переменные экземпляра, должны быть уникальными только в рамках того объекта.
Если Вы вызываете один из decode...
возвращаются методы этого класса с помощью ключа, не существующего в архиве, неположительное значение. Это значение варьируется декодируемым типом. Например, если ключ не существует в архиве, decodeBoolForKey:
возвраты NO
false
, decodeIntForKey:
возвраты 0
, и decodeObjectForKey:
возвраты nil
.
NSKeyedUnarchiver
поддержки ограничили приведение типа. Значение, закодированное как какой-либо тип целого числа, ли стандартный интервал или явное 32-разрядное или 64-разрядное целое число, может декодироваться с помощью какого-либо из целочисленных методов декодирования. Аналогично, значение, закодированное как плавание или дважды, может декодироваться или как плавание или как двойное значение. Если закодированное значение является слишком большим для адаптации в принужденном типе, метод декодирования бросает NSRangeException
. Далее, при попытке принудить значение к несовместимому типу, например декодировании интервала как плавания, метод декодирования бросает NSInvalidUnarchiveOperationException
.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.2 и позже.
-
Инициализирует получатель для декодирования архива, ранее закодированного
NSKeyedArchiver
.Объявление
Swift
init(forReadingWithData
data
: NSData)Objective C
- (instancetype)initForReadingWithData:(NSData *)
data
Параметры
data
Архив, ранее закодированный
NSKeyedArchiver
.Возвращаемое значение
NSKeyedUnarchiver
объект, инициализированный для для декодированияdata
.Обсуждение
Когда Вы заканчиваете декодировать данные, необходимо вызвать
finishDecoding
.Этот метод выдает исключение если
data
не допустимый архив.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Декодирует и возвращает граф объектов, ранее закодированный
NSKeyedArchiver
и сохраненный в данномNSData
объект.Объявление
Swift
class func unarchiveObjectWithData(_
data
: NSData) -> AnyObject?Objective C
+ (id)unarchiveObjectWithData:(NSData *)
data
Параметры
data
Граф объектов, ранее закодированный
NSKeyedArchiver
.Возвращаемое значение
Граф объектов, ранее закодированный
NSKeyedArchiver
и сохраненный вdata
.Обсуждение
Этот метод повышает
NSInvalidArchiveOperationException
еслиdata
не допустимый архив.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Декодирует и возвращает граф объектов, ранее закодированный
NSKeyedArchiver
записанный в файл в данном пути.Объявление
Swift
class func unarchiveObjectWithFile(_
path
: String) -> AnyObject?Objective C
+ (id)unarchiveObjectWithFile:(NSString *)
path
Параметры
path
Путь к файлу, содержащему граф объектов, ранее закодированный
NSKeyedArchiver
.Возвращаемое значение
Граф объектов, ранее закодированный
NSKeyedArchiver
записанный в файлpath
. Возвратыnil
если нет никакого файла вpath
.Обсуждение
Этот метод повышает
NSInvalidArgumentException
если файл вpath
не содержит допустимый архив.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Указывает, требует ли получатель, чтобы все разархивированные классы соответствовали
NSSecureCoding
.Объявление
Swift
func setRequiresSecureCoding(_
flag
: Bool)Objective C
- (void)setRequiresSecureCoding:(BOOL)
flag
Параметры
flag
YES
true
если получатель требуетNSSecureCoding
;NO
false
если нет.Обсуждение
При установке получателя для требования безопасного кодирования, он выдаст исключение, при попытке разархивировать класс, не соответствующий
NSSecureCoding
.Безопасное требование кодирования для
NSKeyedUnarchiver
разработан, чтобы быть установленным один раз на верхнем уровне и остаться на. После того, как включенный, пытаясь вызватьsetRequiresSecureCoding:
со значениемNO
false
выдаст исключение. Это должно предотвратить классы от выборочного выключения безопасного кодирования.Обратите внимание на то, что метод get находится на суперклассе,
NSCoder
. ПосмотритеNSCoder
для получения дополнительной информации о безопасном кодировании.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.8 и позже.
-
Возвращает булево значение, указывающее, содержит ли архив значение для данного ключа в текущем объеме декодирования.
Объявление
Swift
func containsValueForKey(_
key
: String) -> BoolObjective C
- (BOOL)containsValueForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
YES
true
если архив содержит значение дляkey
в текущем объеме декодирования, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Декодирует булево значение, связанное с данным ключом.
Объявление
Swift
func decodeBoolForKey(_
key
: String) -> BoolObjective C
- (BOOL)decodeBoolForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
Булево значение связалось с ключом
key
. ВозвратыNO
false
еслиkey
не существует.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeBool:forKey:
(NSKeyedArchiver
) -
Декодирует поток байтов, связанных с данным ключом.
Объявление
Swift
func decodeBytesForKey(_
key
: String, returnedLengthlengthp
: UnsafeMutablePointer<Int>) -> UnsafePointer<UInt8>Objective C
- (const uint8_t *)decodeBytesForKey:(NSString *)
key
returnedLength:(NSUInteger *)lengthp
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.lengthp
По возврату, содержит число возвращенных байтов.
Возвращаемое значение
Поток байтов связался с ключом
key
. ВозвратыNULL
еслиkey
не существует.Обсуждение
Возвращенное значение является указателем на временный буфер, принадлежавший получателю. Буфер уходит с unarchiver, не содержанием блока пула автовыпуска. Необходимо скопировать байты в собственный буфер при необходимости в данных для сохранения вне жизни получателя.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeBytes:length:forKey:
(NSKeyedArchiver
) -
Декодирует двойную точность значение с плавающей точкой, связанное с данным ключом.
Объявление
Objective C
- (double)decodeDoubleForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
Двойная точность значение с плавающей точкой связалась с ключом
key
. Возвраты0.0
еслиkey
не существует.Обсуждение
Если заархивированное значение было закодировано как одинарная точность, тип принужден.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeDouble:forKey:
(NSKeyedArchiver
)encodeFloat:forKey:
(NSKeyedArchiver
) -
Декодирует одинарную точность значение с плавающей точкой, связанное с данным ключом.
Объявление
Swift
func decodeFloatForKey(_
key
: String) -> FloatObjective C
- (float)decodeFloatForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
Одинарная точность значение с плавающей точкой связалась с ключом
key
. Возвраты0.0
еслиkey
не существует.Обсуждение
Если заархивированное значение было закодировано как двойная точность, тип принужден, освободив точность. Если заархивированное значение является слишком большим для одинарной точности, метод повышает
NSRangeException
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeFloat:forKey:
(NSKeyedArchiver
)encodeDouble:forKey:
(NSKeyedArchiver
) -
Декодирует целочисленное значение, связанное с данным ключом.
Объявление
Swift
func decodeIntForKey(_
key
: String) -> Int32Objective C
- (int)decodeIntForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
Целочисленное значение связалось с ключом
key
. Возвраты0
еслиkey
не существует.Обсуждение
Если заархивированное значение было закодировано с различным размером, но является все еще целым числом, тип принужден. Если заархивированное значение является слишком большим для вписывания в размер по умолчанию для целого числа, метод повышает
NSRangeException
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeInt:forKey:
(NSKeyedArchiver
) -
Декодирует 32-разрядное целочисленное значение, связанное с данным ключом.
Объявление
Swift
func decodeInt32ForKey(_
key
: String) -> Int32Objective C
- (int32_t)decodeInt32ForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
32-разрядное целочисленное значение связалось с ключом
key
. Возвраты0
еслиkey
не существует.Обсуждение
Если заархивированное значение было закодировано с различным размером, но является все еще целым числом, тип принужден. Если заархивированное значение является слишком большим для вписывания в 32-разрядное целое число, метод повышает
NSRangeException
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeInt32:forKey:
(NSKeyedArchiver
) -
Декодирует 64-разрядное целочисленное значение, связанное с данным ключом.
Объявление
Swift
func decodeInt64ForKey(_
key
: String) -> Int64Objective C
- (int64_t)decodeInt64ForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
64-разрядное целочисленное значение связалось с ключом
key
. Возвраты0
еслиkey
не существует.Обсуждение
Если заархивированное значение было закодировано с различным размером, но является все еще целым числом, тип принужден.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeInt64:forKey:
(NSKeyedArchiver
) -
Декодирует и возвращает объект, связанный с данным ключом.
Объявление
Swift
func decodeObjectForKey(_
key
: String) -> AnyObject?Objective C
- (id)decodeObjectForKey:(NSString *)
key
Параметры
key
Ключ в архиве в текущем объеме декодирования.
key
не должен бытьnil
.Возвращаемое значение
Объект связался с ключом
key
. Возвратыnil
еслиkey
не существует, или если значение дляkey
nil
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
encodeObject:forKey:
(NSKeyedArchiver
) -
Говорит получателю, что Вы закончены, декодируя объекты.
Объявление
Swift
func finishDecoding()
Objective C
- (void)finishDecoding
Обсуждение
Вызов этого метода позволяет получателю уведомлять своего делегата и выполнять любые заключительные операции на архиве. Как только этот метод вызывается, получатель не может декодировать дальнейшие значения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Делегат получателя.
Объявление
Swift
unowned(unsafe) var delegate: NSKeyedUnarchiverDelegate?
Objective C
@property(assign) id< NSKeyedUnarchiverDelegate > delegate
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Добавляет перевод класса, отображающийся на
NSKeyedUnarchiver
посредством чего объекты, закодированные с данным именем класса, декодируются как экземпляры данного класса вместо этого.Объявление
Swift
class func setClass(_
cls
: AnyClass?, forClassNamecodedName
: String)Objective C
+ (void)setClass:(Class)
cls
forClassName:(NSString *)codedName
Параметры
cls
Класс, которым можно заменить экземпляры названного класса
codedName
.codedName
Очевидное имя класса в архиве.
Обсуждение
При декодировании используется отображение перевода класса, только если никакой перевод не сочтен первым в отдельной карте перевода экземпляра.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Возвращает класс из который
NSKeyedUnarchiver
инстанцирует закодированного объекта с данным именем класса.Объявление
Swift
class func classForClassName(_
codedName
: String) -> AnyClass?Objective C
+ (Class)classForClassName:(NSString *)
codedName
Параметры
codedName
Очевидное имя класса в архиве.
Возвращаемое значение
Класс тот, от который
NSKeyedUnarchiver
инстанцирует объекта, закодированного с именем классаcodedName
. Возвратыnil
еслиNSKeyedUnarchiver
не имеет перевода, отображающегося дляcodedName
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Добавляет перевод класса, отображающийся на получатель, посредством чего объекты, закодированные с данным именем класса, декодируются как экземпляры данного класса вместо этого.
Объявление
Swift
func setClass(_
cls
: AnyClass?, forClassNamecodedName
: String)Objective C
- (void)setClass:(Class)
cls
forClassName:(NSString *)codedName
Параметры
cls
Класс, которым можно заменить экземпляры названного класса
codedName
.codedName
Очевидное имя класса в архиве.
Обсуждение
При декодировании карта перевода получателя переопределяет любой перевод, который может также присутствовать в карте класса (см. setClass:forClassName:).
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Возвращает класс, от которого получатель инстанцирует закодированного объекта с данным именем класса.
Объявление
Swift
func classForClassName(_
codedName
: String) -> AnyClass?Objective C
- (Class)classForClassName:(NSString *)
codedName
Параметры
codedName
Имя класса.
Возвращаемое значение
Класс, от которого получатель инстанцирует закодированного объекта с именем класса
codedName
. Возвратыnil
если получатель не имеет перевода, отображающегося дляcodedName
.Обсуждение
Отдельная карта перевода класса не ищется.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Имена исключений, повышенных
NSKeyedUnarchiver
если существует проблема, извлекающая архив.Объявление
Swift
let NSInvalidUnarchiveOperationException: NSString!
Objective C
NSString *NSInvalidUnarchiveOperationException;
Константы