我正在使用AFNetworking获得编译器警告,但不应该。我如何解决它?

时间:2012-11-20 16:00:53

标签: xcode afnetworking

我正在使用当前正在升级到iOS 6的项目中最优秀的AFNetworking库。我正处于升级过程中,减少了编译时收到的一堆警告针对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并进行清理。两者都不起作用。

3 个答案:

答案 0 :(得分:75)

我不确定您是否使用CocoaPods,但这是在AFNetworking Github page上跟踪的已知问题。

我能够通过将正确的import语句直接添加到我的`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

答案 1 :(得分:14)

如果您正在使用swift:Xcode在编译Prefix.pch文件之前编译Swift代码,那么即使您的.pch文件中包含正确的导入,您也会收到这些警告。我发现的最佳解决方案是在导入AFNetworking之前将它们添加到项目的Bridging-Header.h文件中:

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

答案 2 :(得分:1)

这已经得到了解答,但是,如果你正在开发一个可能为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

通过评估您正在编译的目标,它将包含正确的文件。