Type arguments cannot be applied to non-parameterized class BFTask in PFAnalytics and PFObject

大城市里の小女人 提交于 2019-11-29 12:14:52

问题


I've updated my project to iOS 9, my podfile, and all necessary files, but it will not build. The source of my grief is in the following error message:

Type arguments cannot be applied to non-parameterized class 'BFTask'

This is the only error that shows, but it shows up multiple times in both PFAnalytics.h and probably more importantly PFObject.h.

Could someone tell me what this means and please suggest a solution? I hope I have provided enough information, but if not, let me know!

The code samples are as follows: In PFObject.h and PFAnalytics.h, everywhere there is the following:

(BFTask PF_GENERIC(XXSOMECLASS *)*) someMethod; 

the error is thrown. This is no code of mine, it is PFObject.h and PFAnalytics.h as stated before. Examples of the functions throwing the error in PFObject.h are below

- (BFTask PF_GENERIC(NSNumber *)*)saveInBackground; 
- (BFTask PF_GENERIC(NSNumber *)*)saveEventually;
- (BFTask PF_GENERIC(NSNumber *)*)deleteInBackground;
+ (BFTask PF_GENERIC(NSNumber *)*)saveAllInBackground:(PF_NULLABLE NSArray *)objects;
+ (BFTask PF_GENERIC(NSNumber *)*)deleteAllInBackground:(PF_NULLABLE NSArray *)objects;
// .... etc

when clicking on the stop sign the suggestion is to delete PF_GENERIC(NSNumber *), resulting in a method like this

 - (BFTask *)xxsomeMethod; 

but that doesn't help as it just gets a lot messier

Update 02: The contents of my Podfile:

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'

target: 'BMR' do 
    pod 'AFNetworking', '~> 2.6' 
    pod 'ParseFacebookUtils', '~> 1.8' 
    pod 'Parse' 
    pod 'ParseUI', '~> 1.1' 
    pod 'FBSDKCoreKit', '~> 4.6' 
    pod 'FBSDKLoginKit', '~> 4.6'
    pod 'JSQMessagesViewController', '~> 7.2'
    pod 'IDMPhotoBrowser', '~> 1.7' 
    pod 'RNGridMenu', '~> 0.1' 
    pod 'APHorizontalMenu', '~> 1.3' 
    pod 'ASIHTTPRequest', '~> 1.8' 
    pod 'AutoScrollLabel', '~> 0.4' 
    pod 'CJAMacros', '~> 2.1' 
    pod 'CrittercismSDK', '~> 5.3'
end

回答1:


Make sure that you don't have a duplicate version of the Bolts.framework.

If you are using both Parse SDK and Facebook SDK you will encounter a problem where Parse SDK contains an older version of Bolts (currently 1.1.5) and the FB SDK has the newest version of Bolts SDK (>= 1.2.2)

Once you remove an older version of the Bolt.framework that comes with Parse SDK you should be fine.

To check what version of Bolts.SDK you have simply go to the Bolts.framework file, right - click and choose "Get Info".




回答2:


You have two Bolts.framework, old from FacebookSDK and new from Parse. So go to the FacebookSDK folder from where you added the FacebookSDK into the xcode and delete the Bolts.framework. Keep the new Bolts.framework and everything will be fine now.

If you still is not able to find the old Bolts.framework find the class file showing error and right click it and select show in finder and traceback the facebook folder from the finder and make sure it is in Facebook SDK folder and delete the Bolts.framework. Make sure you don't delete the new Bolts.framework you added from Parse SDK folder.




回答3:


I had the same problem (spent a few hours investigating whats going on). I messed up old FacebookSDK framework with the one I installed via cocoapods

  1. Check the following path ~/Documents/FacebookSDK to see if there are some outdated SDK
  2. Remove any import of Facebook SDK #import <FacebookSDK/FacebookSDK.h>
  3. Install it via cocoapods
    pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
    or add the new framework manually.


来源:https://stackoverflow.com/questions/32673375/type-arguments-cannot-be-applied-to-non-parameterized-class-bftask-in-pfanalytic

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!