2016-11-11 3 views
1

Я унаследовал проект iOS, который использует cocoapods.Xcode не может найти объявление интерфейса после запуска «pod install»

Репо включает каталог Pods со всеми необходимыми стручками, замороженными во времени. Если я клонирую репо и создаю приложение, все в порядке. Если я бегу pod update, а затем построить, я получаю сообщение об ошибке:

Cannot find interface declaration for COOperation.

Проблема, кажется, с библиотекой под названием CompositeOperations, которая вытягивается в определенной учетной записи мерзавца (не из cocoapods непосредственно - не уверен, что если но просто пытается дать как можно больше информации). Xcode находит библиотеку в порядке, но по какой-то причине она не загружает класс, объявленный в файле интерфейса.

Мне кажется глупым включить каталог Pods в репо. Я чувствую, что разработчики должны клонировать репо, а затем выдать git install, чтобы скрыть все зависимости.

Любые предложения по тому, что мне нужно для настройки, чтобы Xcode успешно завершил мой проект?

Фактическая ошибка в MessageScreenDataFetchOperation.h является:

/Users/user/src/myapp/myapp-iOS/Classes/Shared/Operations/MessageScreenDataFetchOperation.h:13:46: Cannot find interface declaration for 'COOperation', superclass of 'MessageScreenDataFetchOperation'; did you mean 'NSOperation'?

А вот что MessageScreenDataFetchOperation.h выглядит следующим образом:

#import <CompositeOperations/COOperation.h> 

@protocol GroupRef; 

@interface MessageScreenDataFetchOperation : COOperation 
- (id)initWithMessageId:(NSNumber *)messageId group:(id <GroupRef>)groupRef memberId:(NSNumber *)memberId; 
@end 

Вот мой Podfile:

platform :ios, '8.0' 

source 'https://github.com/CocoaPods/Specs.git' 

target :MyTarget do 
    pod 'RestKit', '~> 0.24.0' 
    pod 'CompositeOperations', :git => 'https://github.com/stanislaw/CompositeOperations.git' 

    pod 'MBProgressHUD', '~> 0.8' 
    pod 'EKKeyboardAvoiding', '~> 2.0' 
    pod 'RBStoryboardLink', '0.1.0' 
    pod 'SWRevealViewController', '~> 2.0.0' 
    pod 'youtube-ios-player-helper', :git => 'https://github.com/stanislaw/youtube-ios-player-helper', :branch => '0.1.1-and-no-ads' 
    pod 'SZTextView' 

    pod 'MagicKit', :git => 'https://github.com/stanislaw/MagicKit' 
    pod 'ECPhoneNumberFormatter', :git => 'https://github.com/enriquez/ECPhoneNumberFormatter.git' 
    pod 'SSKeychain' 
    pod 'Mantle' 
    pod 'RSEnvironment', :git => 'https://github.com/rabovik/RSEnvironment' 

    pod 'FBSDKCoreKit' 
    pod 'FBSDKLoginKit' 
    pod 'FBSDKShareKit' 

    # Analytics 
    pod 'FlurrySDK', '5.1.0' 
    pod 'Fabric' 
    pod 'Crashlytics' 

    pod 'NewRelicAgent' 

    # Logging 
    pod 'EchoLogger', :git => 'https://github.com/stanislaw/EchoLogger' 
    pod 'AFNetworkingLogger', :git => 'https://github.com/stanislaw/AFNetworkingLogger' 
end 

target :MyTargetUnitTests do 
    pod 'OCMock', '~> 3.0' 
    pod 'Kiwi' 
    pod 'JPSimulatorHacks', :git => 'https://github.com/plu/JPSimulatorHacks' 
end 
+0

Возможно, вы должны показать свой файл подкачки, декларацию, о которой идет речь, и как вы импортируете библиотеку ... –

+0

спасибо @ l'L'l, я вставил все выше. – djibouti33

ответ

0

Оказывается, версия, испеченная в проекте Xcode, была гораздо более старой версией. Подфайл не ограничивался номером версии, поэтому запуск 'pod update' обновил библиотеку до последней версии, что привело к существенным изменениям, что сделало ее несовместимой с моей базой кода.

Я понял это, изменив Podfile.lock после запуска pod update и заметив резкую разницу в версиях.

Я пошел вперед с удалением каталога Pods и файла .xcworkspace, но внесли поправки в Podile, чтобы ограничить библиотеку исходя из определенного тега.

Смежные вопросы