Аргументы типа не могут применяться к непараметрированному классу 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
Ответы
Ответ 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'
или добавить новую структуру вручную.