Xojo Conferences

Platforms to show: All Mac Windows Linux Cross-Platform

NSKeyedUnarchiverMBS class

Super class: NSCoderMBS

Type Topic Plugin Version macOS Windows Linux Console & Web iOS
class Cocoa MBS MacBase Plugin 13.2 Yes No No Yes, macOS only No
Function: The plugin class for unarchiving objects.
// make archiver
dim a as new NSKeyedArchiverMBS

// add a string
a.encodeString "Hello World", "Greeting"

// finish

// query data
dim m as MemoryBlock = a.archiverData

// start unarchiver
dim u as new NSKeyedUnarchiverMBS(m)

// query and display a value
dim s as string = u.decodeString("Greeting")
MsgBox s
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 the NSKeyedArchiver 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 false, decodeIntForKey returns 0, and decodeObjectForKey returns nil.

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 raises an NSRangeException. Further, when trying to coerce a value to an incompatible type, for example decoding an int as a float, the decoding method raises an NSInvalidUnarchiveOperationException.
Subclass of the NSCoderMBS class.

Feedback, Comments & Corrections

Super class NSCoderMBS

This class has no sub classes.

Blog Entries

The items on this page are in the following plugins: MBS MacBase Plugin.

NSKeyedArchiverMBS   -   NSKeyValueObserverMBS

The biggest plugin in space...

MBS FileMaker tutorial videos