Подтвердить что ты не робот

Аргументы типа не могут применяться к непараметрированному классу BFTask в PFAnalytics и PFObject

Я обновил свой проект до iOS 9, моего podfile и всех необходимых файлов, но он не будет создан. Источником моего горя является следующее сообщение об ошибке:

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

Это единственная ошибка, которая отображается, но она отображается несколько раз как в PFAnalytics.h, так и, что более важно, PFObject.h.

Может ли кто-нибудь сказать мне, что это значит, и предложите решение? Надеюсь, я предоставил достаточно информации, но если нет, то дайте мне знать!

** Обновление 01: ** Я не смог опубликовать снимок экрана об ошибках, потому что мой недостаточно репутаций.

Образцы кода выглядят следующим образом: В PFObject.h и PFAnalytics.h везде есть следующее:

(BFTask PF_GENERIC(XXSOMECLASS *)*) someMethod; 

возникает ошибка. Это не мой код, это PFObject.h и PFAnalytics.h, как указано выше. Примеры функций, бросающих ошибку в PFObject.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; 

но это не помогает, поскольку он просто получает много messier

Обновление 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
4b9b3361

Ответ 1

Убедитесь, что у вас нет дублирующей версии Bolts.framework.

Если вы используете как Parse SDK, так и Facebook SDK, вы столкнетесь с проблемой, когда Parse SDK содержит более старую версию болтов (в настоящее время 1.1.5), а FB SDK имеет самую новую версию Bolts SDK ( >= 1.2.2 )

Как только вы удалите более старую версию Bolt.framework, которая поставляется с Parse SDK, вы должны быть в порядке.

Чтобы проверить, какая версия Bolts.SDK вы просто заходите в файл Bolts.framework, щелкните правой кнопкой мыши и выберите "Получить информацию".

Ответ 2

У вас есть два Bolts.framework, старый из FacebookSDK и новый из Parse. Поэтому перейдите в папку FacebookSDK, где вы добавили FacebookSDK в xcode и удалите Bolts.framework. Сохраните новый Bolts.framework, и теперь все будет хорошо.

Если вы все еще не можете найти старый Bolts.framework, найдите файл класса, отображающий ошибку, и щелкните его правой кнопкой мыши и выберите в поисковике и трассировке show facebook folder from finder и убедитесь, что он находится в папке SDK в Facebook и удалите Bolts.framework. Убедитесь, что вы не удалите новую версию Bolts.framework, которую вы добавили из папки Parse SDK.

Ответ 3

У меня была такая же проблема (проведена несколько часов, исследуя, что происходит). Я испортил старую инфраструктуру FacebookSDK с той, которую я установил через cocoapods

  • Проверьте следующий путь ~/Documents/FacebookSDK, чтобы узнать, есть ли устаревший SDK
  • Удалите любой импорт из SDK Facebook #import <FacebookSDK/FacebookSDK.h>
  • Установите его через cocoapods
    pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
    или добавить новую структуру вручную.