Подтвердить что ты не робот

Я получаю предупреждения компилятора с AFNetworking, но этого не должно быть. Как это исправить?

Я использую самую превосходную библиотеку AFNetworking в проекте, который я сейчас обновляю до iOS 6. Я нахожусь в середине обновления, сокращая кучу предупреждений, которые я получаю при компиляции с iOS 6 SDK.

AFNetworking дает мне два предупреждения по всем целям:

SystemConfiguration framework not found in project, or not included in
precompiled header. Network reachability functionality will not be available.

и

MobileCoreServices framework not found in project, or not included in
precompiled header. Automatic MIME type detection when uploading files
in multipart requests will not be available.

Здесь, однако, эти два libraries добавлены во все мои targets. Я бы хотел избавиться от этих предупреждений надлежащим образом; Я не буду изменять файлы AFNetworking. Я подозреваю, что Xcode глуп. Это, по общему признанию, небольшая вещь, но оставляя предупреждения вокруг - плохая практика.

Как удалить эти предупреждения?

Я попытался перезапустить Xcode и очистить. Оба не работают.

4b9b3361

Ответ 1

Я не уверен, что вы используете CocoaPods или нет, но это известная проблема, отслеживаемая в AFNetworking Страница Github.

Мне удалось исправить это, добавив правильные операторы импорта непосредственно в мой файл PROJECTNAME-Prefix.pch, и я изменил его на это.

#ifdef __OBJC__
  #import <UIKit/UIKit.h>
  #import <SystemConfiguration/SystemConfiguration.h>
  #import <MobileCoreServices/MobileCoreServices.h>
#endif

Если у вас есть что-то еще, не удаляйте его. Просто добавьте импорт для SystemConfiguration и MobileCoreServices.

Для OS X:

#ifdef __OBJC__
    #import <Cocoa/Cocoa.h>
    #import <SystemConfiguration/SystemConfiguration.h>
    #import <CoreServices/CoreServices.h>
#endif

Ответ 2

Если вы используете swift: Xcode компилирует код Swift перед компиляцией файла Prefix.pch, поэтому вы получите эти предупреждения, даже если правильный импорт находится в вашем .pch файле. Лучшее решение, которое я нашел, - это добавить их в проект Bridging-Header.h перед импортом AFNetworking:

#import <SystemConfiguration/SystemConfiguration.h>
#import <MobileCoreServices/MobileCoreServices.h>
#import "AFNetworking.h"

Ответ 3

Это уже ответили, но все же, если вы разрабатываете инструмент командной строки, который можно скомпилировать как для OS X, так и для iOS (не для App Store), вы можете добавить это:

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <SystemConfiguration/SystemConfiguration.h>

    #if TARGET_OS_IPHONE
        #import <MobileCoreServices/MobileCoreServices.h>
    #elif TARGET_OS_MAC
        #import <CoreServices/CoreServices.h>
    #endif

#endif

Оценив целевой объект, который вы компилируете, он будет содержать правильные файлы.