Ссылка 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
использовать текущее средство выделения по умолчанию.domain
CFString, идентифицирующий ошибочный домен. Если эта ссылка
NULL
или иначе не допустимый CFString, поведение не определено.code
CFIndex, идентифицирующий код ошибки. Код интерпретируется в контексте ошибочного домена.
userInfo
CFDictionary, создаваемый с
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
использовать текущее средство выделения по умолчанию.domain
CFString, идентифицирующий ошибочный домен. Если эта ссылка
NULL
или иначе не допустимый CFString, поведение не определено.code
CFIndex, идентифицирующий код ошибки. Код интерпретируется в контексте ошибочного домена.
userInfoKeys
Массив
numUserInfoValues
Кфстрингс использовал в качестве ключей в создании userInfo словаря. Значение этого параметра может бытьNULL
еслиnumUserInfoValues
0
.userInfoValues
Массив
numUserInfoValues
Типы CF, используемые в качестве значений в создании userInfo словаря. Значение этого параметра может бытьNULL
еслиnumUserInfoValues
0
.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 );
Параметры
err
CFError для исследования. Если это не допустимый 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 );
Параметры
err
CFError для исследования. Если это не допустимый 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 );
Параметры
err
CFError для исследования. Если это не допустимый CFError, поведение не определено.
Возвращаемое значение
Локализованное, человечески-презентабельное предложение восстановления для
err
, илиNULL
если никакая презентабельная пользователем строка не доступна. Владение соблюдает Создать Правило.Обсуждение
Это - строка, которая может быть выведена на экран как «информативное» (или «вторичная») сообщение на предупредительной панели. Например, описание ошибки “Не могло сохранить файл 'Буква' в папке 'Documents', потому что объем ‘MyDisk’ не имеет достаточного количества пространства “. мог бы иметь соответствующее предложение восстановления, “Удалите некоторые файлы из объема и попробуйте еще раз “.
По умолчанию эта функция ищет значение для
kCFErrorLocalizedRecoverySuggestionKey
введите пользовательский информационный словарь. Бесплатные соединенные мостом экземплярыNSError
мог бы обеспечить дополнительные способы поведения для производства этого значения.При создании CFError необходимо попытаться удостовериться, что возвращаемое значение человечески-презентабельно и локализуется путем обеспечения значения для
kCFErrorLocalizedRecoverySuggestionKey
в пользовательском информационном словаре.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает идентификатор типа для непрозрачного типа CFError.
Объявление
Swift
func CFErrorGetTypeID() -> CFTypeID
Objective C
CFTypeID CFErrorGetTypeID ( void );
Возвращаемое значение
Идентификатор типа для непрозрачного типа CFError.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.5 и позже.
-
Ссылка на объект CFError.
Объявление
Swift
typealias CFErrorRef = CFError
Objective 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;
Константы
-
kCFErrorDomainPOSIX
kCFErrorDomainPOSIX
Константа, указавшая домен POSIX.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainOSStatus
kCFErrorDomainOSStatus
Константа, указавшая домен OS.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainMach
kCFErrorDomainMach
Константа, указавшая домен Маха.
Доступный в OS X v10.5 и позже.
-
kCFErrorDomainCocoa
kCFErrorDomainCocoa
Константа, указавшая домен 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;
Константы
-
kCFErrorLocalizedDescriptionKey
kCFErrorLocalizedDescriptionKey
Ключ для идентификации презентабельного конечным пользователем описания в
userInfo
словарь.Доступный в OS X v10.5 и позже.
-
kCFErrorLocalizedFailureReasonKey
kCFErrorLocalizedFailureReasonKey
Ключ для идентификации презентабельной конечным пользователем причины отказа в
userInfo
словарь.Доступный в OS X v10.5 и позже.
-
kCFErrorLocalizedRecoverySuggestionKey
kCFErrorLocalizedRecoverySuggestionKey
Ключ для идентификации презентабельного конечным пользователем предложения восстановления в
userInfo
словарь.Доступный в OS X v10.5 и позже.
-
kCFErrorDescriptionKey
kCFErrorDescriptionKey
Ключ для идентификации описания в
userInfo
словарь.Если у Вас нет локализуемых строк ошибки, при создании объекта CFError можно обеспечить значение для этого ключа. Описание должно быть полным предложением, если это возможно, и не должно содержать доменное имя или код ошибки.
Доступный в OS X v10.5 и позже.
-
kCFErrorUnderlyingErrorKey
kCFErrorUnderlyingErrorKey
Ключ для идентификации базовой ошибки в
userInfo
словарь.Доступный в OS X v10.5 и позже.
-
kCFErrorURLKey
kCFErrorURLKey
Ключ для идентификации связанного URL в
userInfo
словарь.Доступный в OS X v10.7 и позже.
-
kCFErrorFilePathKey
kCFErrorFilePathKey
Ключ для идентификации связанного пути к файлу в
userInfo
словарь.Доступный в OS X v10.7 и позже.
Обсуждение
При создании пользовательского информационного словаря как минимум необходимо обеспечить значения для одного из
kCFErrorLocalizedDescriptionKey
иkCFErrorLocalizedFailureReasonKey
; идеально необходимо обеспечить значения дляkCFErrorLocalizedDescriptionKey
,kCFErrorLocalizedFailureReasonKey
, иkCFErrorLocalizedRecoverySuggestionKey
. Как правило, необходимо обеспечить значение для одного из такжеkCFErrorURLKey
илиkCFErrorFilePathKey
. -