// Turn the document contents into a single savable lump of data - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError { #pragma unused(typeName) // Produce the data lump: NSData * retval = [NSKeyedArchiver archivedDataWithRootObject:model]; // If the lump is nil something went wrong // fill out the error object to explain what wrent wrong if ( outError != NULL ) { // The sender wanted an error reported. If there // was a problem, fill in an NSError object if (retval == nil) { // The error object should include an (unhelpful) // explanation of what happened NSDictionary * userInfoDict = [NSDictionary dictionaryWithObjectsAndKeys: @"Internal error formatting data", NSLocalizedDescriptionKey, @"Archiving of data failed. Probably a bug.", NSLocalizedFailureReasonErrorKey, @"There's nothing you can do.", NSLocalizedRecoverySuggestionErrorKey, nil]; *outError = [NSError errorWithDomain:LinearInternalErrorDomain code:linErrCantFormatDocumentData userInfo:userInfoDict]; } else { // No problem. Don't supply an error object. *outError = nil; } } return retval; }