Link Errors with Parse.framework iOS

2019-01-17 12:58发布

问题:

I tried importing the parse framework in my project. I made sure it is liked with my project and I couldn't find anything about whether it is 'arc sensitive' or not. My project is arc based.

This is the error I'm getting:

Undefined symbols for architecture i386:
  "_SCNetworkReachabilityCreateWithName", referenced from:
      -[PFCommandCache init] in Parse(PFCommandCache.o)
      +[PFInternalUtils(Reachability) isParseReachable] in Parse(PFInternalUtils.o)
  "_SCNetworkReachabilityGetFlags", referenced from:
      ___22-[PFCommandCache init]_block_invoke in Parse(PFCommandCache.o)
      +[PFInternalUtils(Reachability) isParseReachable] in Parse(PFInternalUtils.o)
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[PFCommandCache init] in Parse(PFCommandCache.o)
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[PFCommandCache init] in Parse(PFCommandCache.o)
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[PFCommandCache dealloc] in Parse(PFCommandCache.o)
  "_SecItemAdd", referenced from:
      +[PFInternalUtils saveToKeychain:data:] in Parse(PFInternalUtils.o)
  "_SecItemCopyMatching", referenced from:
      +[PFInternalUtils loadFromKeychain:] in Parse(PFInternalUtils.o)
  "_SecItemDelete", referenced from:
      +[PFInternalUtils saveToKeychain:data:] in Parse(PFInternalUtils.o)
      +[PFInternalUtils deleteFromKeychain:] in Parse(PFInternalUtils.o)
  "_UTTypeCopyPreferredTagWithClass", referenced from:
      -[PFFile getMimeType] in Parse(PFFile.o)
  "_UTTypeCreatePreferredIdentifierForTag", referenced from:
      -[PFFile getMimeType] in Parse(PFFile.o)
  "_kCFStreamPropertyFTPAttemptPersistentConnection", referenced from:
      -[PFHTTPCommand scheduleInCurrentThread] in Parse(PFHTTPCommand.o)
  "_kCFStreamPropertyHTTPAttemptPersistentConnection", referenced from:
      -[PFHTTPCommand scheduleInCurrentThread] in Parse(PFHTTPCommand.o)
  "_kSecAttrAccessible", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecAttrAccessibleAfterFirstUnlock", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecAttrAccount", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecAttrService", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecClass", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecClassGenericPassword", referenced from:
      +[PFInternalUtils getKeychainQuery:] in Parse(PFInternalUtils.o)
  "_kSecMatchLimit", referenced from:
      +[PFInternalUtils loadFromKeychain:] in Parse(PFInternalUtils.o)
  "_kSecMatchLimitOne", referenced from:
      +[PFInternalUtils loadFromKeychain:] in Parse(PFInternalUtils.o)
  "_kSecReturnData", referenced from:
      +[PFInternalUtils loadFromKeychain:] in Parse(PFInternalUtils.o)
  "_kSecValueData", referenced from:
      +[PFInternalUtils saveToKeychain:data:] in Parse(PFInternalUtils.o)
  "_kUTTagClassFilenameExtension", referenced from:
      -[PFFile getMimeType] in Parse(PFFile.o)
  "_kUTTagClassMIMEType", referenced from:
      -[PFFile getMimeType] in Parse(PFFile.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

回答1:

Make sure you link against the SystemConfiguration and the Security framework in your project. See this question for more details. As Hector pointed out in the comments, all of the required frameworks for Parse can be found in the iOS Quick Start Guide.

  • AudioToolbox.framework
  • CFNetwork.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • libz.1.1.3.dylib
  • MobileCoreServices.framework
  • QuartzCore.framework
  • Security.framework
  • StoreKit.framework
  • SystemConfiguration.framework


回答2:

Add MobileCoreServices.framework from your project in addition to these frameworks

-Accounts.framework

-AudioToolbox.framework

-CFNetwork.framework

-CoreGraphics.framework

-CoreLocation.framework

-libz.dylib

-MobileCoreServices.framework

-QuartzCore.framework

-Security.framework

-Social.framework

-StoreKit.framework

-SystemConfiguration.framework



回答3:

I had to add "$(inherited)" to the Framework Search Paths in Build Settings to get it work.