类型参数不能应用于 PFAnalytics 和 PFObject 中的非参数化 class BFTask

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

我已将我的项目更新为 iOS 9、我的 podfile 和所有必要的文件,但它无法构建。我的悲伤源于以下错误消息:

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

这是唯一显示的错误,但它在 PFAnalytics.h 和可能更重要的 PFObject.h 中多次出现。

谁能告诉我这是什么意思,请提出解决方案?我希望我提供了足够的信息,但如果没有,请告诉我!

代码示例如下:在PFObject.hPFAnalytics.h中,处处都是:

(BFTask PF_GENERIC(XXSOMECLASS *)*) someMethod; 

抛出错误。这不是我的代码,如前所述,它是 PFObject.hPFAnalytics.hPFObject.h 中抛出错误的函数示例如下

- (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

当点击停车标志时,建议删除 PF_GENERIC(NSNumber *),导致这样的方法

 - (BFTask *)xxsomeMethod; 

但这无济于事,因为它变得更加混乱

更新02:我的内容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

确保您没有 Bolts.framework 的重复版本。

如果您同时使用 Parse SDK 和 Facebook SDK,您将遇到一个问题,即 Parse SDK 包含较旧版本的 Bolts(当前为 1.1.5),而 FB SDK 包含最新版本的 Bolts SDK(>= 1.2) .2)

一旦您删除了 Parse SDK 附带的 Bolt.framework 的旧版本,您应该没问题。

要查看 Bolts.SDK 的版本,只需转到 Bolts.framework 文件,右键单击并选择 "Get Info"。

您有两个 Bolts.framework,旧的来自 FacebookSDK,新的来自 Parse。因此,转到您将 FacebookSDK 添加到 xcode 的 FacebookSDK 文件夹并删除 Bolts.framework。保留新的Bolts.framework,现在一切都会好起来的。

如果您仍然找不到旧的 Bolts.framework 找到显示错误的 class 文件并右键单击它 select 在 finder 中显示并从finder 并确保它在 Facebook SDK 文件夹中并删除 Bolts.framework。确保您没有删除从 Parse SDK 文件夹中添加的新 Bolts.framework。

我遇到了同样的问题(花了几个小时调查发生了什么)。我把旧的 FacebookSDK 框架和我通过 cocoapods 安装的框架搞混了

  1. 检查以下路径~/Documents/FacebookSDK是否有一些过时的SDK
  2. 删除 Facebook SDK 的任何导入#import <FacebookSDK/FacebookSDK.h>
  3. 通过 cocoapods 安装它
    pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
    或手动添加新框架。