Linker errors with ParseUI iOS and CocoaPods

2019-05-11 03:59发布

问题:

I was attempting to build an app using Parse and wanted to give ParseUI a shot. I imported Parse's main SDK using Cocoa pods, and it worked fine. When I decided to add ParseUI, I ran into problems.

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_BFTaskCompletionSource", referenced from:
      objc-class-ref in PFImageView.o
  "_OBJC_CLASS_$_PFProduct", referenced from:
      objc-class-ref in PFProductTableViewController.o
     (maybe you meant: _OBJC_CLASS_$_PFProductTableViewController)
  "_OBJC_CLASS_$_PFPurchase", referenced from:
      objc-class-ref in PFProductTableViewController.o
     (maybe you meant: _OBJC_CLASS_$_PFPurchaseTableViewCell)
  "_OBJC_CLASS_$_PFQuery", referenced from:
      objc-class-ref in PFQueryTableViewController.o
     (maybe you meant: _OBJC_CLASS_$_PFQueryTableViewController)
  "_OBJC_CLASS_$_PFTwitterUtils", referenced from:
      objc-class-ref in PFLogInViewController.o
  "_OBJC_CLASS_$_PFUser", referenced from:
      objc-class-ref in PFLogInViewController.o
      objc-class-ref in PFSignUpViewController.o
  "_PFParseErrorDomain", referenced from:
      -[PFImageView loadInBackground:] in PFImageView.o
      ___32-[PFImageView loadInBackground:]_block_invoke30 in PFImageView.o
      -[PFSignUpViewController _signUpAction] in PFSignUpViewController.o
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
      -[PFImageView loadInBackground:] in PFImageView.o
      ___32-[PFImageView loadInBackground:]_block_invoke30 in PFImageView.o
      -[PFSignUpViewController _signUpAction] in PFSignUpViewController.o
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorCacheMiss", referenced from:
      ___48-[PFQueryTableViewController loadObjects:clear:]_block_invoke in PFQueryTableViewController.o
  "_kPFErrorInvalidEmailAddress", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorInvalidImageData", referenced from:
      ___32-[PFImageView loadInBackground:]_block_invoke30 in PFImageView.o
  "_kPFErrorUnsavedFile", referenced from:
      -[PFImageView loadInBackground:] in PFImageView.o
  "_kPFErrorUserEmailMissing", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorUserEmailTaken", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorUserPasswordMissing", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorUsernameMissing", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
  "_kPFErrorUsernameTaken", referenced from:
      -[PFSignUpViewController _signUpDidFailWithError:] in PFSignUpViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I've attempted things like forcing the inclusion of the Parse.framework for the linking of ParseUI, but it didnt seem to help. I'm not an expert with cocoapods or with XCode, so I don't know if there's something obvious I'm missing.

I've tried cocoapods 0.35 and 0.36-beta-1. This is a swift project, so I don't know if that could be causing some of the problems.

回答1:

You need to use the framework Bolts.frameworks. This framework is part of the Parse SDK. Another thing is that with the last version of Parse SDK (v1.6.2 right now) you'll have to import Parse/Parse.h, ParseUI/ParseUI.h or both, depending on which objects you are using. Tell me if you need more information about installing de Bolts framework! :)