Я хотел бы создать собственный домен ошибок для своего приложения. У меня есть перечисляемый тип NSInteger
, который охватывает все возможные коды ошибок, которые я могу получить, мой вопрос: как связать их с моим личным доменом? Спасибо.
Создание домена NSError
Ответы (1)
Ваш домен — это просто строка с его именем. Вам не нужно его нигде регистрировать.
В заголовке с кодами ошибок добавьте эту строку:
extern NSString *const MyErrorDomain;
И в вашем файле реализации:
NSString *const MyErrorDomain = @"MyErrorDomain";
Затем вы можете использовать эту именованную константу для своего домена ошибок. Сделанный!
person
Jonathan Grynspan
schedule
08.05.2012
Просто чтобы уточнить, когда вы говорите, файл реализации, где для этого будет лучшее место? Я создаю собственный класс ошибок. Моя ошибка.
- person John Lane; 08.05.2012
Однако лучше всего использовать обратную схему URL-адресов, например.
com.mycompany.myapp.error
. Если вы хотите использовать его только в одной пользовательской ошибке, поместите определение в файл MyError.m, недоступный извне.
- person Sulthan; 08.05.2012
@MarioPen: Ваш
.m
файл. Если у вас нет того, который соответствует заголовку, где находится ваш enum
, лучше всего сделать его и поместить туда константу.
- person Jonathan Grynspan; 08.05.2012
@Sulthan Обратная нотация обычно не используется для доменов ошибок, потому что они могут быть представлены пользователям, а нотация обычно делает их очень длинными. Это все вопрос стиля/предпочтения, поскольку любая строка будет рассматриваться как допустимый домен ошибки.
- person Jonathan Grynspan; 08.05.2012
@JonathanGrynspan Домен ошибки — это не то, что следует представлять пользователям. Никогда. Формат рекомендуется в developer.apple. com/library/mac/#documentation/Cocoa/Conceptual/
- person Sulthan; 08.05.2012
@Sulthan: есть законные причины для предоставления пользователю кода ошибки, и при этом на Mac вам также необходимо указать домен (в противном случае код ошибки -1, 400 или 25 может означать что угодно.)
- person Jonathan Grynspan; 08.05.2012