Что такое NSCFDictionary?

Я возвращаю NSCFDictionary, и я не могу понять, как его использовать. Я знаю, что это тип NSCFDictionary, потому что я напечатал class, и он появился как __NCSFDictionary. Я не могу понять, как с этим поступить.

Я просто пытаюсь держаться за это пока, но не могу даже заставить это работать:

NSDictionary *dict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials]; for(NSURLProtectionSpace key in [dict keyEnumerator]) { NSCFDictionary *value = [dict objectForKey:key]; } 

Ссылка на class для allCredentials говорит, что предполагается, что он вернет словарь, значения которого также являются словарями. Однако мое заявление о назначении не работает. Нужен ли мне какой-нибудь отбор?

NSDictionary и другие classы коллекции – это кластеры classов : несколько classов подclassа classа, маскирующихся под интерфейсом одного classа: все они обеспечивают одинаковые функциональные возможности (поскольку они являются подclassами одного и того же classа – в случае NSDictionary, это включает в себя три «примитивных методы “ -count , -objectForKey: и -keyEnumerator ), но для разных ситуаций они могут быть эффективными в разных ситуациях, основываясь на том, как они созданы и какие типы данных они могут хранить.

NSCFDictionary – это просто конкретный подclass NSDictionary. То есть ваши NSDictionaries могут фактически быть экземплярами NSCFDictionary, но вы должны рассматривать их как экземпляры NSDictionary, потому что это предоставит вам требуемые функции хранения словаря.

  NSDictionary * value = [dict objectForKey: key]; 

Теперь еще одна причина, по которой ваш код не работает: NSURLProtectionSpace – это class, поэтому вы должны использовать его как указатель, например:

 for (NSURLProtectionSpace *key ... 

NSCFDictionary является частным подclassом NSDictionary, который реализует фактическую функциональность. Это просто NSDictionary. Почти любой NSDictionary, который вы используете, будет NSCFDictionary под капотом. Для вас это не имеет значения. Вы можете ввести переменную как NSDictionary и использовать ее соответствующим образом.

У меня есть NSCFDictionary, который на самом деле является объектом NSMutableDictionary, я могу удалить из него элементы. Я упоминаю это, чтобы уточнить ответ jtbandes: объектом NSCFDictionary может быть любой объект, который наследуется от NSDictionary.

  • Использование MPMediaItems с AVAudioPlayer
  • @synthesize vs @dynamic, каковы различия?
  • MKAnnotation, простой пример
  • Нарисуйте часть круга
  • UIPageViewController не возвращает никаких распознавателей жестов в iOS 6
  • Как скопировать объект в объекте c
  • Лучший способ удалить из NSMutableArray во время итерации?
  • Добавление изображений в кнопки UIActionSheet, как в UIDocumentInteractionController
  • Обнаружение интернет-соединения iPhone SDK
  • Получение видимого прямоугольника содержимого UIScrollView
  • Как я могу получить точное время, например, в миллисекундах в Objective-C?
  • Interesting Posts

    Выполнение SQL-запросов в таблице Excel в рабочей книге с помощью макроса VBA

    Удаление профиля пользователя из командной строки Windows 7

    Создать учетную запись, Забыли пароль и сменить пароль

    Что такое эквивалент JSON.NET XPath, SelectNodes XML, SelectSingleNode?

    Каковы некоторые альтернативы ReSharper?

    Как правильно использовать LogonUser для олицетворения пользователя домена из клиента рабочей группы

    Плагин Firefox / Google Chrome для включения многосеансового просмотра

    Почему C # XmlDocument.LoadXml (строка) терпит неудачу при включении заголовка XML?

    Стоит ли получить контроллер SATA-3 для максимального выключения SSD?

    LINQ to Entities не распознает метод ‘System.Web.Mvc.FileResult’

    Как сохранить модели от ML Pipeline до S3 или HDFS?

    Разрыв строки в выражении ()?

    Как проверить загруженный файл в ASP.NET MVC?

    Как остановить обновление окон?

    Где я могу начать изучать обработку изображений и распознавание объектов?

    Давайте будем гением компьютера.