pub struct NSKeyedArchiver { /* private fields */ }NSCoder and NSKeyedArchiver only.Expand description
Implementations§
Source§impl NSKeyedArchiver
impl NSKeyedArchiver
Sourcepub fn initRequiringSecureCoding(
this: Allocated<Self>,
requires_secure_coding: bool,
) -> Retained<Self>
pub fn initRequiringSecureCoding( this: Allocated<Self>, requires_secure_coding: bool, ) -> Retained<Self>
Initializes the receiver for encoding an archive, optionally disabling secure coding.
If
NSSecureCodingcannot be used,
requiresSecureCodingmay be turned off here; for improved security, however,
requiresSecureCodingshould be left enabled whenever possible.
requiresSecureCodingensures that all encoded objects conform to
NSSecureCoding,preventing the possibility of encoding objects which cannot be decoded later.
To produce archives whose structure matches those previously encoded using
+archivedDataWithRootObject,encode the top-level object in your archive for the
NSKeyedArchiveRootObjectKey.
Sourcepub unsafe fn archivedDataWithRootObject_requiringSecureCoding_error(
object: &AnyObject,
requires_secure_coding: bool,
) -> Result<Retained<NSData>, Retained<NSError>>
Available on crate features NSData and NSError only.
pub unsafe fn archivedDataWithRootObject_requiringSecureCoding_error( object: &AnyObject, requires_secure_coding: bool, ) -> Result<Retained<NSData>, Retained<NSError>>
NSData and NSError only.Returns an
NSDataobject containing the encoded form of the object graph whose root object is given, optionally disabling secure coding.
If
NSSecureCodingcannot be used,
requiresSecureCodingmay be turned off here; for improved security, however,
requiresSecureCodingshould be left enabled whenever possible.
requiresSecureCodingensures that all encoded objects conform to
NSSecureCoding,preventing the possibility of encoding objects which cannot be decoded later.
If the object graph cannot be encoded, returns
niland sets the
errorout parameter.
§Safety
object should be of the correct type.
Sourcepub fn init(this: Allocated<Self>) -> Retained<Self>
👎Deprecated: Use -initRequiringSecureCoding: instead
pub fn init(this: Allocated<Self>) -> Retained<Self>
Initialize the archiver with empty data, ready for writing.
pub fn initForWritingWithMutableData( this: Allocated<Self>, data: &NSMutableData, ) -> Retained<Self>
NSData only.Sourcepub unsafe fn archivedDataWithRootObject(
root_object: &AnyObject,
) -> Retained<NSData>
👎Deprecated: Use +archivedDataWithRootObject:requiringSecureCoding:error: insteadAvailable on crate feature NSData only.
pub unsafe fn archivedDataWithRootObject( root_object: &AnyObject, ) -> Retained<NSData>
NSData only.§Safety
root_object should be of the correct type.
Sourcepub unsafe fn archiveRootObject_toFile(
root_object: &AnyObject,
path: &NSString,
) -> bool
👎Deprecated: Use +archivedDataWithRootObject:requiringSecureCoding:error: and -writeToURL:options:error: insteadAvailable on crate feature NSString only.
pub unsafe fn archiveRootObject_toFile( root_object: &AnyObject, path: &NSString, ) -> bool
NSString only.§Safety
root_object should be of the correct type.
Sourcepub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn NSKeyedArchiverDelegate>>>
pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn NSKeyedArchiverDelegate>>>
§Safety
This is not retained internally, you must ensure the object is still alive.
Sourcepub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn NSKeyedArchiverDelegate>>,
)
pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn NSKeyedArchiverDelegate>>, )
pub fn outputFormat(&self) -> NSPropertyListFormat
NSPropertyList only.Sourcepub fn setOutputFormat(&self, output_format: NSPropertyListFormat)
Available on crate feature NSPropertyList only.
pub fn setOutputFormat(&self, output_format: NSPropertyListFormat)
NSPropertyList only.Setter for outputFormat.
Sourcepub fn encodedData(&self) -> Retained<NSData>
Available on crate feature NSData only.
pub fn encodedData(&self) -> Retained<NSData>
NSData only.If encoding has not yet finished, then invoking this property will call finishEncoding and return the data. If you initialized the keyed archiver with a specific mutable data instance, then it will be returned from this property after finishEncoding is called.
pub fn finishEncoding(&self)
Sourcepub unsafe fn setClassName_forClass_class(
coded_name: Option<&NSString>,
cls: &AnyClass,
)
Available on crate feature NSString only.
pub unsafe fn setClassName_forClass_class( coded_name: Option<&NSString>, cls: &AnyClass, )
NSString only.§Safety
cls probably has further requirements.
Sourcepub unsafe fn setClassName_forClass(
&self,
coded_name: Option<&NSString>,
cls: &AnyClass,
)
Available on crate feature NSString only.
pub unsafe fn setClassName_forClass( &self, coded_name: Option<&NSString>, cls: &AnyClass, )
NSString only.§Safety
cls probably has further requirements.
Sourcepub unsafe fn classNameForClass_class(
cls: &AnyClass,
) -> Option<Retained<NSString>>
Available on crate feature NSString only.
pub unsafe fn classNameForClass_class( cls: &AnyClass, ) -> Option<Retained<NSString>>
NSString only.§Safety
cls probably has further requirements.
Sourcepub unsafe fn classNameForClass(
&self,
cls: &AnyClass,
) -> Option<Retained<NSString>>
Available on crate feature NSString only.
pub unsafe fn classNameForClass( &self, cls: &AnyClass, ) -> Option<Retained<NSString>>
NSString only.§Safety
cls probably has further requirements.
Sourcepub unsafe fn encodeObject_forKey(
&self,
object: Option<&AnyObject>,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeObject_forKey( &self, object: Option<&AnyObject>, key: &NSString, )
NSString only.§Safety
object should be of the correct type.
Sourcepub unsafe fn encodeConditionalObject_forKey(
&self,
object: Option<&AnyObject>,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeConditionalObject_forKey( &self, object: Option<&AnyObject>, key: &NSString, )
NSString only.§Safety
object should be of the correct type.
pub fn encodeBool_forKey(&self, value: bool, key: &NSString)
NSString only.pub fn encodeInt_forKey(&self, value: c_int, key: &NSString)
NSString only.pub fn encodeInt32_forKey(&self, value: i32, key: &NSString)
NSString only.pub fn encodeInt64_forKey(&self, value: i64, key: &NSString)
NSString only.pub fn encodeFloat_forKey(&self, value: c_float, key: &NSString)
NSString only.pub fn encodeDouble_forKey(&self, value: c_double, key: &NSString)
NSString only.Sourcepub unsafe fn encodeBytes_length_forKey(
&self,
bytes: *const u8,
length: NSUInteger,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeBytes_length_forKey( &self, bytes: *const u8, length: NSUInteger, key: &NSString, )
NSString only.§Safety
bytes must be a valid pointer or null.
pub fn requiresSecureCoding(&self) -> bool
Sourcepub fn setRequiresSecureCoding(&self, requires_secure_coding: bool)
pub fn setRequiresSecureCoding(&self, requires_secure_coding: bool)
Setter for requiresSecureCoding.
Methods from Deref<Target = NSCoder>§
Sourcepub unsafe fn encodeValueOfObjCType_at(
&self,
type: NonNull<c_char>,
addr: NonNull<c_void>,
)
pub unsafe fn encodeValueOfObjCType_at( &self, type: NonNull<c_char>, addr: NonNull<c_void>, )
§Safety
typemust be a valid pointer.addrmust be a valid pointer.
pub unsafe fn encodeDataObject(&self, data: &NSData)
NSData only.pub unsafe fn decodeDataObject(&self) -> Option<Retained<NSData>>
NSData only.Sourcepub unsafe fn decodeValueOfObjCType_at_size(
&self,
type: NonNull<c_char>,
data: NonNull<c_void>,
size: NSUInteger,
)
pub unsafe fn decodeValueOfObjCType_at_size( &self, type: NonNull<c_char>, data: NonNull<c_void>, size: NSUInteger, )
§Safety
typemust be a valid pointer.datamust be a valid pointer.
pub unsafe fn versionForClassName(&self, class_name: &NSString) -> NSInteger
NSString only.Sourcepub unsafe fn encodeObject(&self, object: Option<&AnyObject>)
pub unsafe fn encodeObject(&self, object: Option<&AnyObject>)
§Safety
object should be of the correct type.
Sourcepub unsafe fn encodeRootObject(&self, root_object: &AnyObject)
pub unsafe fn encodeRootObject(&self, root_object: &AnyObject)
§Safety
root_object should be of the correct type.
Sourcepub unsafe fn encodeBycopyObject(&self, an_object: Option<&AnyObject>)
pub unsafe fn encodeBycopyObject(&self, an_object: Option<&AnyObject>)
§Safety
an_object should be of the correct type.
Sourcepub unsafe fn encodeByrefObject(&self, an_object: Option<&AnyObject>)
pub unsafe fn encodeByrefObject(&self, an_object: Option<&AnyObject>)
§Safety
an_object should be of the correct type.
Sourcepub unsafe fn encodeConditionalObject(&self, object: Option<&AnyObject>)
pub unsafe fn encodeConditionalObject(&self, object: Option<&AnyObject>)
§Safety
object should be of the correct type.
Sourcepub unsafe fn encodeArrayOfObjCType_count_at(
&self,
type: NonNull<c_char>,
count: NSUInteger,
array: NonNull<c_void>,
)
pub unsafe fn encodeArrayOfObjCType_count_at( &self, type: NonNull<c_char>, count: NSUInteger, array: NonNull<c_void>, )
§Safety
typemust be a valid pointer.arraymust be a valid pointer.
Sourcepub unsafe fn encodeBytes_length(
&self,
byteaddr: *const c_void,
length: NSUInteger,
)
pub unsafe fn encodeBytes_length( &self, byteaddr: *const c_void, length: NSUInteger, )
§Safety
byteaddr must be a valid pointer or null.
pub unsafe fn decodeObject(&self) -> Option<Retained<AnyObject>>
pub unsafe fn decodeTopLevelObjectAndReturnError( &self, ) -> Result<Retained<AnyObject>, Retained<NSError>>
NSError only.Sourcepub unsafe fn decodeArrayOfObjCType_count_at(
&self,
item_type: NonNull<c_char>,
count: NSUInteger,
array: NonNull<c_void>,
)
pub unsafe fn decodeArrayOfObjCType_count_at( &self, item_type: NonNull<c_char>, count: NSUInteger, array: NonNull<c_void>, )
§Safety
item_typemust be a valid pointer.arraymust be a valid pointer.
Sourcepub unsafe fn decodeBytesWithReturnedLength(
&self,
lengthp: NonNull<NSUInteger>,
) -> *mut c_void
pub unsafe fn decodeBytesWithReturnedLength( &self, lengthp: NonNull<NSUInteger>, ) -> *mut c_void
§Safety
lengthp must be a valid pointer.
Sourcepub unsafe fn encodePropertyList(&self, a_property_list: &AnyObject)
pub unsafe fn encodePropertyList(&self, a_property_list: &AnyObject)
§Safety
a_property_list should be of the correct type.
pub unsafe fn decodePropertyList(&self) -> Option<Retained<AnyObject>>
Sourcepub unsafe fn setObjectZone(&self, zone: *mut NSZone)
Available on crate feature NSZone only.
pub unsafe fn setObjectZone(&self, zone: *mut NSZone)
NSZone only.§Safety
zone must be a valid pointer or null.
pub unsafe fn objectZone(&self) -> *mut NSZone
NSZone only.pub unsafe fn systemVersion(&self) -> c_uint
pub unsafe fn allowsKeyedCoding(&self) -> bool
Sourcepub unsafe fn encodeObject_forKey(
&self,
object: Option<&AnyObject>,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeObject_forKey( &self, object: Option<&AnyObject>, key: &NSString, )
NSString only.§Safety
object should be of the correct type.
Sourcepub unsafe fn encodeConditionalObject_forKey(
&self,
object: Option<&AnyObject>,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeConditionalObject_forKey( &self, object: Option<&AnyObject>, key: &NSString, )
NSString only.§Safety
object should be of the correct type.
pub unsafe fn encodeBool_forKey(&self, value: bool, key: &NSString)
NSString only.pub unsafe fn encodeInt_forKey(&self, value: c_int, key: &NSString)
NSString only.pub unsafe fn encodeInt32_forKey(&self, value: i32, key: &NSString)
NSString only.pub unsafe fn encodeInt64_forKey(&self, value: i64, key: &NSString)
NSString only.pub unsafe fn encodeFloat_forKey(&self, value: c_float, key: &NSString)
NSString only.pub unsafe fn encodeDouble_forKey(&self, value: c_double, key: &NSString)
NSString only.Sourcepub unsafe fn encodeBytes_length_forKey(
&self,
bytes: *const u8,
length: NSUInteger,
key: &NSString,
)
Available on crate feature NSString only.
pub unsafe fn encodeBytes_length_forKey( &self, bytes: *const u8, length: NSUInteger, key: &NSString, )
NSString only.§Safety
bytes must be a valid pointer or null.
pub unsafe fn containsValueForKey(&self, key: &NSString) -> bool
NSString only.pub unsafe fn decodeObjectForKey( &self, key: &NSString, ) -> Option<Retained<AnyObject>>
NSString only.pub unsafe fn decodeTopLevelObjectForKey_error( &self, key: &NSString, ) -> Result<Retained<AnyObject>, Retained<NSError>>
NSError and NSString only.pub unsafe fn decodeBoolForKey(&self, key: &NSString) -> bool
NSString only.pub unsafe fn decodeIntForKey(&self, key: &NSString) -> c_int
NSString only.pub unsafe fn decodeInt32ForKey(&self, key: &NSString) -> i32
NSString only.pub unsafe fn decodeInt64ForKey(&self, key: &NSString) -> i64
NSString only.pub unsafe fn decodeFloatForKey(&self, key: &NSString) -> c_float
NSString only.pub unsafe fn decodeDoubleForKey(&self, key: &NSString) -> c_double
NSString only.Sourcepub unsafe fn decodeBytesForKey_returnedLength(
&self,
key: &NSString,
lengthp: *mut NSUInteger,
) -> *const u8
Available on crate feature NSString only.
pub unsafe fn decodeBytesForKey_returnedLength( &self, key: &NSString, lengthp: *mut NSUInteger, ) -> *const u8
NSString only.§Safety
lengthp must be a valid pointer or null.
Sourcepub unsafe fn decodeBytesWithMinimumLength(
&self,
length: NSUInteger,
) -> *mut c_void
pub unsafe fn decodeBytesWithMinimumLength( &self, length: NSUInteger, ) -> *mut c_void
Decode bytes from the decoder. The length of the bytes must be greater than or equal to the length parameter.
If the result exists, but is of insufficient length, then the decoder uses failWithError to fail the entire decode operation. The result of that is configurable on a per-NSCoder basis using NSDecodingFailurePolicy.
Sourcepub unsafe fn decodeBytesForKey_minimumLength(
&self,
key: &NSString,
length: NSUInteger,
) -> *const u8
Available on crate feature NSString only.
pub unsafe fn decodeBytesForKey_minimumLength( &self, key: &NSString, length: NSUInteger, ) -> *const u8
NSString only.Decode bytes from the decoder for a given key. The length of the bytes must be greater than or equal to the length parameter.
If the result exists, but is of insufficient length, then the decoder uses failWithError to fail the entire decode operation. The result of that is configurable on a per-NSCoder basis using NSDecodingFailurePolicy.
pub unsafe fn encodeInteger_forKey(&self, value: NSInteger, key: &NSString)
NSString only.pub unsafe fn decodeIntegerForKey(&self, key: &NSString) -> NSInteger
NSString only.pub unsafe fn requiresSecureCoding(&self) -> bool
Sourcepub unsafe fn decodeObjectOfClass_forKey(
&self,
a_class: &AnyClass,
key: &NSString,
) -> Option<Retained<AnyObject>>
Available on crate feature NSString only.
pub unsafe fn decodeObjectOfClass_forKey( &self, a_class: &AnyClass, key: &NSString, ) -> Option<Retained<AnyObject>>
NSString only.§Safety
a_class probably has further requirements.
Sourcepub unsafe fn decodeTopLevelObjectOfClass_forKey_error(
&self,
a_class: &AnyClass,
key: &NSString,
) -> Result<Retained<AnyObject>, Retained<NSError>>
Available on crate features NSError and NSString only.
pub unsafe fn decodeTopLevelObjectOfClass_forKey_error( &self, a_class: &AnyClass, key: &NSString, ) -> Result<Retained<AnyObject>, Retained<NSError>>
NSError and NSString only.§Safety
a_class probably has further requirements.
Sourcepub unsafe fn decodeArrayOfObjectsOfClass_forKey(
&self,
cls: &AnyClass,
key: &NSString,
) -> Option<Retained<NSArray>>
Available on crate features NSArray and NSString only.
pub unsafe fn decodeArrayOfObjectsOfClass_forKey( &self, cls: &AnyClass, key: &NSString, ) -> Option<Retained<NSArray>>
NSArray and NSString only.Decodes the
NSArrayobject for the given
key,which should be an
NSArray<cls>,containing the given non-collection class (no nested arrays or arrays of dictionaries, etc) from the coder.
Requires
NSSecureCodingotherwise an exception is thrown and sets the
decodingFailurePolicyto
NSDecodingFailurePolicySetErrorAndReturn.
Returns
nilif the object for
keyis not of the expected types, or cannot be decoded, and sets the
erroron the decoder.
§Safety
cls probably has further requirements.
Sourcepub unsafe fn decodeDictionaryWithKeysOfClass_objectsOfClass_forKey(
&self,
key_cls: &AnyClass,
object_cls: &AnyClass,
key: &NSString,
) -> Option<Retained<NSDictionary>>
Available on crate features NSDictionary and NSString only.
pub unsafe fn decodeDictionaryWithKeysOfClass_objectsOfClass_forKey( &self, key_cls: &AnyClass, object_cls: &AnyClass, key: &NSString, ) -> Option<Retained<NSDictionary>>
NSDictionary and NSString only.Decodes the
NSDictionaryobject for the given
key,which should be an
NSDictionary<keyCls,objectCls>, with keys of type given in
keyClsand objects of the given non-collection class
objectCls(no nested dictionaries or other dictionaries contained in the dictionary, etc) from the coder.
Requires
NSSecureCodingotherwise an exception is thrown and sets the
decodingFailurePolicyto
NSDecodingFailurePolicySetErrorAndReturn.
Returns
nilif the object for
keyis not of the expected types, or cannot be decoded, and sets the
erroron the decoder.
§Safety
key_clsprobably has further requirements.object_clsprobably has further requirements.
Sourcepub unsafe fn decodeObjectOfClasses_forKey(
&self,
classes: Option<&NSSet<AnyClass>>,
key: &NSString,
) -> Option<Retained<AnyObject>>
Available on crate features NSSet and NSString only.
pub unsafe fn decodeObjectOfClasses_forKey( &self, classes: Option<&NSSet<AnyClass>>, key: &NSString, ) -> Option<Retained<AnyObject>>
NSSet and NSString only.§Safety
classes generic probably has further requirements.
Sourcepub unsafe fn decodeTopLevelObjectOfClasses_forKey_error(
&self,
classes: Option<&NSSet<AnyClass>>,
key: &NSString,
) -> Result<Retained<AnyObject>, Retained<NSError>>
Available on crate features NSError and NSSet and NSString only.
pub unsafe fn decodeTopLevelObjectOfClasses_forKey_error( &self, classes: Option<&NSSet<AnyClass>>, key: &NSString, ) -> Result<Retained<AnyObject>, Retained<NSError>>
NSError and NSSet and NSString only.§Safety
classes generic probably has further requirements.
Sourcepub unsafe fn decodeArrayOfObjectsOfClasses_forKey(
&self,
classes: &NSSet<AnyClass>,
key: &NSString,
) -> Option<Retained<NSArray>>
Available on crate features NSArray and NSSet and NSString only.
pub unsafe fn decodeArrayOfObjectsOfClasses_forKey( &self, classes: &NSSet<AnyClass>, key: &NSString, ) -> Option<Retained<NSArray>>
NSArray and NSSet and NSString only.Decodes the
NSArrayobject for the given
key,which should be an
NSArray,containing the given non-collection classes (no nested arrays or arrays of dictionaries, etc) from the coder.
Requires
NSSecureCodingotherwise an exception is thrown and sets the
decodingFailurePolicyto
NSDecodingFailurePolicySetErrorAndReturn.
Returns
nilif the object for
keyis not of the expected types, or cannot be decoded, and sets the
erroron the decoder.
§Safety
classes generic probably has further requirements.
Sourcepub unsafe fn decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey(
&self,
key_classes: &NSSet<AnyClass>,
object_classes: &NSSet<AnyClass>,
key: &NSString,
) -> Option<Retained<NSDictionary>>
Available on crate features NSDictionary and NSSet and NSString only.
pub unsafe fn decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey( &self, key_classes: &NSSet<AnyClass>, object_classes: &NSSet<AnyClass>, key: &NSString, ) -> Option<Retained<NSDictionary>>
NSDictionary and NSSet and NSString only.Decodes the
NSDictionaryobject for the given
key,which should be an
NSDictionary,with keys of the types given in
keyClassesand objects of the given non-collection classes in
objectClasses(no nested dictionaries or other dictionaries contained in the dictionary, etc) from the given coder.
Requires
NSSecureCodingotherwise an exception is thrown and sets the
decodingFailurePolicyto
NSDecodingFailurePolicySetErrorAndReturn.
Returns
nilif the object for
keyis not of the expected types, or cannot be decoded, and sets the
erroron the decoder.
§Safety
key_classesgeneric probably has further requirements.object_classesgeneric probably has further requirements.
pub unsafe fn decodePropertyListForKey( &self, key: &NSString, ) -> Option<Retained<AnyObject>>
NSString only.pub unsafe fn allowedClasses(&self) -> Option<Retained<NSSet<AnyClass>>>
NSSet only.Sourcepub unsafe fn failWithError(&self, error: &NSError)
Available on crate feature NSError only.
pub unsafe fn failWithError(&self, error: &NSError)
NSError only.Signals to this coder that the decode has failed. Parameter non-nil error that describes the reason why the decode failed
Sets an error on this NSCoder once per TopLevel decode; calling it repeatedly will have no effect until the call stack unwinds to one of the TopLevel decode entry-points.
This method is only meaningful to call for decodes.
Typically, you would want to call this method in your -initWithCoder: implementation when you detect situations like:
- lack of secure coding
- corruption of your data
- domain validation failures
After calling -failWithError: within your -initWithCoder: implementation, you should clean up and return nil as early as possible.
Once an error has been signaled to a decoder, it remains set until it has handed off to the first TopLevel decode invocation above it. For example, consider the following call graph: A -decodeTopLevelObjectForKey:error: B -initWithCoder: C -decodeObjectForKey: D -initWithCoder: E -decodeObjectForKey: F -failWithError:
In this case the error provided in stack-frame F will be returned via the outError in stack-frame A. Furthermore the result object from decodeTopLevelObjectForKey:error: will be nil, regardless of the result of stack-frame B.
NSCoder implementations support two mechanisms for the stack-unwinding from F to A:
- forced (NSException based)
- particpatory (error based)
The kind of unwinding you get is determined by the decodingFailurePolicy property of this NSCoder (which defaults to NSDecodingFailurePolicyRaiseException to match historical behavior).
Sourcepub unsafe fn decodingFailurePolicy(&self) -> NSDecodingFailurePolicy
pub unsafe fn decodingFailurePolicy(&self) -> NSDecodingFailurePolicy
Defines the behavior this NSCoder should take on decode failure (i.e. corrupt archive, invalid data, etc.).
The default result of this property is NSDecodingFailurePolicyRaiseException, subclasses can change this to an alternative policy.
Sourcepub unsafe fn error(&self) -> Option<Retained<NSError>>
Available on crate feature NSError only.
pub unsafe fn error(&self) -> Option<Retained<NSError>>
NSError only.The current error (if there is one) for the current TopLevel decode.
The meaning of this property changes based on the result of the decodingFailurePolicy property: For NSDecodingFailurePolicyRaiseException, this property will always be nil. For NSDecodingFailurePolicySetErrorAndReturn, this property can be non-nil, and if so, indicates that there was a failure while decoding the archive (specifically its the very first error encountered).
While .error is non-nil, all attempts to decode data from this coder will return a nil/zero-equivalent value.
This error is consumed by a TopLevel decode API (which resets this coder back to a being able to potentially decode data).
Sourcepub unsafe fn encodeNXObject(&self, object: &AnyObject)
👎Deprecated: Not supported
pub unsafe fn encodeNXObject(&self, object: &AnyObject)
§Safety
object should be of the correct type.
pub unsafe fn decodeNXObject(&self) -> Option<Retained<AnyObject>>
Sourcepub unsafe fn decodeValueOfObjCType_at(
&self,
type: NonNull<c_char>,
data: NonNull<c_void>,
)
👎Deprecated
pub unsafe fn decodeValueOfObjCType_at( &self, type: NonNull<c_char>, data: NonNull<c_void>, )
§Safety
typemust be a valid pointer.datamust be a valid pointer.
pub unsafe fn encodePoint(&self, point: NSPoint)
NSGeometry and objc2-core-foundation only.pub unsafe fn decodePoint(&self) -> NSPoint
NSGeometry and objc2-core-foundation only.pub unsafe fn encodeSize(&self, size: NSSize)
NSGeometry and objc2-core-foundation only.pub unsafe fn decodeSize(&self) -> NSSize
NSGeometry and objc2-core-foundation only.pub unsafe fn encodeRect(&self, rect: NSRect)
NSGeometry and objc2-core-foundation only.pub unsafe fn decodeRect(&self) -> NSRect
NSGeometry and objc2-core-foundation only.pub unsafe fn encodePoint_forKey(&self, point: NSPoint, key: &NSString)
NSGeometry and NSString and objc2-core-foundation only.pub unsafe fn encodeSize_forKey(&self, size: NSSize, key: &NSString)
NSGeometry and NSString and objc2-core-foundation only.pub unsafe fn encodeRect_forKey(&self, rect: NSRect, key: &NSString)
NSGeometry and NSString and objc2-core-foundation only.pub unsafe fn decodePointForKey(&self, key: &NSString) -> NSPoint
NSGeometry and NSString and objc2-core-foundation only.pub unsafe fn decodeSizeForKey(&self, key: &NSString) -> NSSize
NSGeometry and NSString and objc2-core-foundation only.pub unsafe fn decodeRectForKey(&self, key: &NSString) -> NSRect
NSGeometry and NSString and objc2-core-foundation only.Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for NSKeyedArchiver
impl AsRef<AnyObject> for NSKeyedArchiver
Source§impl AsRef<NSCoder> for NSKeyedArchiver
impl AsRef<NSCoder> for NSKeyedArchiver
Source§impl AsRef<NSKeyedArchiver> for NSKeyedArchiver
impl AsRef<NSKeyedArchiver> for NSKeyedArchiver
Source§impl AsRef<NSObject> for NSKeyedArchiver
impl AsRef<NSObject> for NSKeyedArchiver
Source§impl Borrow<AnyObject> for NSKeyedArchiver
impl Borrow<AnyObject> for NSKeyedArchiver
Source§impl Borrow<NSCoder> for NSKeyedArchiver
impl Borrow<NSCoder> for NSKeyedArchiver
Source§impl Borrow<NSObject> for NSKeyedArchiver
impl Borrow<NSObject> for NSKeyedArchiver
Source§impl ClassType for NSKeyedArchiver
impl ClassType for NSKeyedArchiver
Source§const NAME: &'static str = "NSKeyedArchiver"
const NAME: &'static str = "NSKeyedArchiver"
Source§type ThreadKind = <<NSKeyedArchiver as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<NSKeyedArchiver as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for NSKeyedArchiver
impl Debug for NSKeyedArchiver
Source§impl DefaultRetained for NSKeyedArchiver
impl DefaultRetained for NSKeyedArchiver
Source§impl Deref for NSKeyedArchiver
impl Deref for NSKeyedArchiver
Source§impl Hash for NSKeyedArchiver
impl Hash for NSKeyedArchiver
Source§impl Message for NSKeyedArchiver
impl Message for NSKeyedArchiver
Source§impl NSObjectProtocol for NSKeyedArchiver
impl NSObjectProtocol for NSKeyedArchiver
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref