Ссылка CFError
Объект CFError инкапсулирует более богатую и расширяемую информацию об ошибке, чем возможное использование только код ошибки или строка ошибки. Базовые атрибуты объекта CFError являются ошибочным доменом (представленный строкой), проблемно-ориентированный код ошибки и “пользовательский информационный словарь”, содержащий специализированную информацию. Ошибки требуются, чтобы иметь домен и код ошибки в том домене. Несколько известных доменов определяются, соответствуя Маху, POSIX и ошибкам OSStatus.
Дополнительный “пользовательский информационный словарь” может предоставить дополнительную информацию, которая могла бы быть полезна для интерпретации и создания отчетов ошибки, включая человекочитаемое описание для ошибки. “Пользовательский информационный словарь” иногда включает другой объект CFError, представляющий ошибку в подсистеме, лежащей в основе ошибки, представленной содержанием объекта CFError. Этот базовый ошибочный объект может предоставить более определенную информацию о причине ошибки.
В целом метод должен сигнализировать состояние ошибки путем возврата, например, false или NULL вместо простым присутствием ошибочного объекта. Метод может тогда дополнительно возвратить объект CFError ссылкой для дальнейшего описания ошибки.
CFError бесплатный соединенный мостом к NSError в платформе Основы — для большего количества подробных данных о бесплатном образовании моста, посмотрите Бесплатные Соединенные мостом Типы. NSError имеет некоторые дополнительные инструкции, упрощающие сообщать об ошибках автоматически пользователям и пытаться восстановиться от них. См. Руководство по программированию Обработки ошибок для получения дополнительной информации о NSError программирование инструкций.
-
Создает новый объект CFError.
Объявление
Swift
func CFErrorCreate(_allocator: CFAllocator!, _domain: CFString!, _code: CFIndex, _userInfo: CFDictionary!) -> CFError!Objective C
CFErrorRef CFErrorCreate ( CFAllocatorRef allocator, CFStringRef domain, CFIndex code, CFDictionaryRef userInfo );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.domainCFString, идентифицирующий ошибочный домен. Если эта ссылка
NULLили иначе не допустимый CFString, поведение не определено.codeCFIndex, идентифицирующий код ошибки. Код интерпретируется в контексте ошибочного домена.
userInfoCFDictionary, создаваемый с
kCFCopyStringDictionaryKeyCallBacksиkCFTypeDictionaryValueCallBacks. Словарь копируется сCFDictionaryCreateCopy. Если Вы не хотите userInfo словарь, можно передатьNULL, когда будет присвоен пустой словарь.Возвращаемое значение
Новый объект CFError. Владение соблюдает Создать Правило.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Создает новый объект CFError использование данного ключи и значения для создания пользовательского информационного словаря.
Объявление
Swift
func CFErrorCreateWithUserInfoKeysAndValues(_allocator: CFAllocator!, _domain: CFString!, _code: CFIndex, _userInfoKeys: UnsafePointer<UnsafePointer<Void>>, _userInfoValues: UnsafePointer<UnsafePointer<Void>>, _numUserInfoValues: CFIndex) -> CFError!Objective C
CFErrorRef CFErrorCreateWithUserInfoKeysAndValues ( CFAllocatorRef allocator, CFStringRef domain, CFIndex code, const void *const *userInfoKeys, const void *const *userInfoValues, CFIndex numUserInfoValues );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.domainCFString, идентифицирующий ошибочный домен. Если эта ссылка
NULLили иначе не допустимый CFString, поведение не определено.codeCFIndex, идентифицирующий код ошибки. Код интерпретируется в контексте ошибочного домена.
userInfoKeysМассив
numUserInfoValuesКфстрингс использовал в качестве ключей в создании userInfo словаря. Значение этого параметра может бытьNULLеслиnumUserInfoValues0.userInfoValuesМассив
numUserInfoValuesТипы CF, используемые в качестве значений в создании userInfo словаря. Значение этого параметра может бытьNULLеслиnumUserInfoValues0.numUserInfoValuesЧисло ключей и значений в
userInfoKeysиuserInfoValuesмассивы.Возвращаемое значение
Новый объект CFError. Владение соблюдает Создать Правило.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает ошибочный домен для данного CFError.
Объявление
Swift
func CFErrorGetDomain(_err: CFError!) -> CFString!Objective C
CFStringRef CFErrorGetDomain ( CFErrorRef err );Параметры
errОшибка исследовать. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Ошибочный домен для
err. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает код ошибки для данного CFError.
Объявление
Swift
func CFErrorGetCode(_err: CFError!) -> CFIndexObjective C
CFIndex CFErrorGetCode ( CFErrorRef err );Параметры
errОшибка исследовать. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Код ошибки
err.Обсуждение
Обратите внимание на то, что эта функция возвращает код ошибки для указанного CFError, не ошибочный возврат для текущего вызова.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает пользовательский информационный словарь для данного CFError.
Объявление
Swift
func CFErrorCopyUserInfo(_err: CFError!) -> CFDictionary!Objective C
CFDictionaryRef CFErrorCopyUserInfo ( CFErrorRef err );Параметры
errОшибка исследовать. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Словарь, содержащий те же ключи и значения как в userInfo словаре
errсоздавался с. Возвращает пустой словарь еслиNULLбыл предоставлен создать функции. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает человечески-презентабельное описание для данной ошибки.
Объявление
Swift
func CFErrorCopyDescription(_err: CFError!) -> CFString!Objective C
CFStringRef CFErrorCopyDescription ( CFErrorRef err );Параметры
errCFError для исследования. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Локализованное, человечески-презентабельное описание
err. Эта функция никогда не возвращаетсяNULL. Владение соблюдает Создать Правило.Обсуждение
Это - полное предложение или два, который говорит, что перестало работать и почему оно перестало работать. Структура описания зависит от подробной информации, предоставленной в пользовательском информационном словаре. Правила для вычислений возвращаемого значения следующие:
Если значение в пользовательском информационном словаре для
kCFErrorLocalizedDescriptionKeyнеNULL, возвраты то значение как есть.Если значение в пользовательском информационном словаре для
kCFErrorLocalizedFailureReasonKeyнеNULL, генерируйте ошибку от этого.Описание - что-то как: «Работа не могла быть завершена». +
kCFErrorLocalizedFailureReasonKeyГенерируйте максимально хорошую презентабельную пользователем строку от
kCFErrorDescriptionKey, домен и код.Описание - что-то как подобный: «Работа не могла быть завершена. Домен/код Error произошел». или «Работа не могла быть завершена». +
kCFErrorDescriptionKey+ «(Домен/код Error)»
Бесплатные соединенные мостом экземпляры
NSErrorмог бы обеспечить дополнительные способы поведения для производства строки описания.Вы не должны зависеть от точного содержания или формата возвращаемой строки, поскольку это могло бы измениться в различных выпусках операционной системы.
При создании CFError необходимо попытаться удостовериться, что возвращаемое значение человечески-презентабельно и локализуется путем обеспечения значения для
kCFErrorLocalizedDescriptionKeyв пользовательском информационном словаре.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает человечески-презентабельную причину отказа данной ошибки.
Объявление
Swift
func CFErrorCopyFailureReason(_err: CFError!) -> CFString!Objective C
CFStringRef CFErrorCopyFailureReason ( CFErrorRef err );Параметры
errCFError для исследования. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Локализованный, человечески-презентабельный отказ рассуждает для
err, илиNULLесли никакая презентабельная пользователем строка не доступна. Владение соблюдает Создать Правило.Обсуждение
Причиной отказа является полное предложение, описывающее, почему работа перестала работать. Во многих случаях это будет просто, «потому что» часть описания (но как полное предложение, делающее локализацию проще). Например, описание ошибки «Не могло сохранить файл 'Буква' в папке 'Documents', потому что объем 'MyDisk' не имеет достаточного количества пространства». мог бы иметь соответствующую причину отказа, «Объем 'MyDisk' не имеет достаточного количества пространства».
По умолчанию эта функция ищет значение для
kCFErrorLocalizedFailureReasonKeyвведите пользовательский информационный словарь. Бесплатные соединенные мостом экземплярыNSErrorмог бы обеспечить дополнительные способы поведения для производства этого значения.При создании CFError необходимо попытаться удостовериться, что возвращаемое значение человечески-презентабельно и локализуется путем обеспечения значения для
kCFErrorLocalizedFailureReasonKeyв пользовательском информационном словаре.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает человеческое презентабельное предложение восстановления для данной ошибки.
Объявление
Swift
func CFErrorCopyRecoverySuggestion(_err: CFError!) -> CFString!Objective C
CFStringRef CFErrorCopyRecoverySuggestion ( CFErrorRef err );Параметры
errCFError для исследования. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Локализованное, человечески-презентабельное предложение восстановления для
err, илиNULLесли никакая презентабельная пользователем строка не доступна. Владение соблюдает Создать Правило.Обсуждение
Это - строка, которая может быть выведена на экран как «информативное» (или «вторичная») сообщение на предупредительной панели. Например, описание ошибки “Не могло сохранить файл 'Буква' в папке 'Documents', потому что объем ‘MyDisk’ не имеет достаточного количества пространства “. мог бы иметь соответствующее предложение восстановления, “Удалите некоторые файлы из объема и попробуйте еще раз “.
По умолчанию эта функция ищет значение для
kCFErrorLocalizedRecoverySuggestionKeyвведите пользовательский информационный словарь. Бесплатные соединенные мостом экземплярыNSErrorмог бы обеспечить дополнительные способы поведения для производства этого значения.При создании CFError необходимо попытаться удостовериться, что возвращаемое значение человечески-презентабельно и локализуется путем обеспечения значения для
kCFErrorLocalizedRecoverySuggestionKeyв пользовательском информационном словаре.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает идентификатор типа для непрозрачного типа CFError.
Объявление
Swift
func CFErrorGetTypeID() -> CFTypeIDObjective C
CFTypeID CFErrorGetTypeID ( void );Возвращаемое значение
Идентификатор типа для непрозрачного типа CFError.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Ссылка на объект CFError.
Объявление
Swift
typealias CFErrorRef = CFErrorObjective C
typedef struct __CFError * CFErrorRef;Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Эти константы определяют домены для объектов CFError.
Объявление
Swift
let kCFErrorDomainPOSIX: CFString! let kCFErrorDomainOSStatus: CFString! let kCFErrorDomainMach: CFString! let kCFErrorDomainCocoa: CFString!Objective C
const CFStringRef kCFErrorDomainPOSIX; const CFStringRef kCFErrorDomainOSStatus; const CFStringRef kCFErrorDomainMach; const CFStringRef kCFErrorDomainCocoa;Константы
-
kCFErrorDomainPOSIXkCFErrorDomainPOSIXКонстанта, указавшая домен POSIX.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainOSStatuskCFErrorDomainOSStatusКонстанта, указавшая домен OS.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainMachkCFErrorDomainMachКонстанта, указавшая домен Маха.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainCocoakCFErrorDomainCocoaКонстанта, указавшая домен Cocoa.
Доступный в OS X v10.5 и позже.
Обсуждение
Значение «кода» будет соответствовать существующим ранее значениям в этих доменах.
Доступность
Доступный в OS X v10.5 и позже.
-
-
Ключи
userInfoсловарь.Объявление
Swift
let kCFErrorLocalizedDescriptionKey: CFString! let kCFErrorLocalizedFailureReasonKey: CFString! let kCFErrorLocalizedRecoverySuggestionKey: CFString! let kCFErrorDescriptionKey: CFString! let kCFErrorUnderlyingErrorKey: CFString! let kCFErrorURLKey: CFString! let kCFErrorFilePathKey: CFString!Objective C
const CFStringRef kCFErrorLocalizedDescriptionKey; const CFStringRef kCFErrorLocalizedFailureReasonKey; const CFStringRef kCFErrorLocalizedRecoverySuggestionKey; const CFStringRef kCFErrorDescriptionKey; const CFStringRef kCFErrorUnderlyingErrorKey; const CFStringRef kCFErrorURLKey; const CFStringRef kCFErrorFilePathKey;Константы
-
kCFErrorLocalizedDescriptionKeykCFErrorLocalizedDescriptionKeyКлюч для идентификации презентабельного конечным пользователем описания в
userInfoсловарь.Доступный в OS X v10.5 и позже.
-
kCFErrorLocalizedFailureReasonKeykCFErrorLocalizedFailureReasonKeyКлюч для идентификации презентабельной конечным пользователем причины отказа в
userInfoсловарь.Доступный в OS X v10.5 и позже.
-
kCFErrorLocalizedRecoverySuggestionKeykCFErrorLocalizedRecoverySuggestionKeyКлюч для идентификации презентабельного конечным пользователем предложения восстановления в
userInfoсловарь.Доступный в OS X v10.5 и позже.
-
kCFErrorDescriptionKeykCFErrorDescriptionKeyКлюч для идентификации описания в
userInfoсловарь.Если у Вас нет локализуемых строк ошибки, при создании объекта CFError можно обеспечить значение для этого ключа. Описание должно быть полным предложением, если это возможно, и не должно содержать доменное имя или код ошибки.
Доступный в OS X v10.5 и позже.
-
kCFErrorUnderlyingErrorKeykCFErrorUnderlyingErrorKeyКлюч для идентификации базовой ошибки в
userInfoсловарь.Доступный в OS X v10.5 и позже.
-
kCFErrorURLKeykCFErrorURLKeyКлюч для идентификации связанного URL в
userInfoсловарь.Доступный в OS X v10.7 и позже.
-
kCFErrorFilePathKeykCFErrorFilePathKeyКлюч для идентификации связанного пути к файлу в
userInfoсловарь.Доступный в OS X v10.7 и позже.
Обсуждение
При создании пользовательского информационного словаря как минимум необходимо обеспечить значения для одного из
kCFErrorLocalizedDescriptionKeyиkCFErrorLocalizedFailureReasonKey; идеально необходимо обеспечить значения дляkCFErrorLocalizedDescriptionKey,kCFErrorLocalizedFailureReasonKey, иkCFErrorLocalizedRecoverySuggestionKey. Как правило, необходимо обеспечить значение для одного из такжеkCFErrorURLKeyилиkCFErrorFilePathKey. -
