Переносимый код для устаревшего ключа словаря userInfo (Какао) - PullRequest
6 голосов
/ 07 июля 2010

В Mac OSX 10.6 ключ словаря userInfo *1001* NSErrorFailingURLStringKey устарел вместо NSURLErrorFailingURLStringErrorKey. Я пытаюсь написать свою программу для переноса на Mac OSX 10.5 и 10.6. В настоящее время я просто использую старый ключ - но мой компилятор выдает мне раздражающие устаревшие предупреждения.

// The following causes deprecation warnings
[[error userInfo] objectForKey:NSErrorFailingURLStringKey]

// But this one won't work on OSX 10.5
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]

Каков наилучший способ написания переносимого кода для обработки устаревших ключей словаря userInfo?

Ответы [ 3 ]

3 голосов
/ 12 июля 2010

Вы можете использовать директивы препроцессора следующим образом:

#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
    [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]
#else
    [[error userInfo] objectForKey:NSErrorFailingURLStringKey]
#endif
1 голос
/ 08 июля 2010

Попробуйте установить базовый SDK на 10,6 и цель развертывания на 10,5.

0 голосов
/ 07 сентября 2016

Для версии Swift вы можете использовать NSURLErrorFailingURLStringErrorKey:

if let url = error?.userInfo[NSURLErrorFailingURLStringErrorKey]{
    //code
}
...