Попытка восстановить устаревшее приложение IOS, ошибка в Facebook-IOS-SDK Cocoapod - PullRequest
0 голосов
/ 08 сентября 2018

Меня попросили восстановить существующее приложение IOS, которое использует Facebook-IOS-SDK. Приложению не менее 5 лет, поэтому я ожидал, что все будет устаревшим. У меня ограниченный опыт работы с XCode и IOS, но я далеко не эксперт. Я никогда не пользовался кокаподами до сегодняшнего дня. Я установил cocoapods и запустил pod init. Facebook-IOS-SDK версии 3.24.4 загружен без ошибок (другие модули, в том числе Bolt, без ошибок).

Я прочитал примечания по миграции на странице разработчика FB относительно версий, и это подразумевает, что я должен иметь возможность использовать 3.24. Когда я делаю чистую сборку, я получаю ошибку:

(FBRequest *)requestForUpdateOpenGraphObject(id<FBOpenGraphObject>)object 
{
    return [FBRequest requestForUpdateOpenGraphObjectWithId:object[@"id"] graphObject:object];
}

Expected method to read dictionary element not found on object of type 'id<FBOpenGraphObject>'

Эта ошибка в FBRequest.m, коде cocoapod, а не в коде моих клиентов. Этот код помечен только для чтения. Если это является правильной версией pod, и я не могу ее изменить, то есть ли в (большом) проекте какая-то другая зависимость, которую нужно обновить?

Podfile:

# Uncomment this line to define a global platform for your project
platform :ios, "9.0"
target "tbd" do
   pod 'IQKeyboardManager'
   pod 'UICKeyChainStore'
   pod 'CocoaLumberjack', '~> 2.0.0-beta'
   pod 'SDURLCache'
   pod 'HockeySDK'
   pod 'Facebook-iOS-SDK', '~> 3.23'
   pod 'GoogleAnalytics-iOS-SDK'
   pod 'UIActionSheet-Blocks', '~> 1.0'
end

target "tbdTests" do

end

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Единственное неприятное решение, которое я нашел, это изменить код внутри FBRequest.m вручную.

Изменить строку 370 с:

return [FBRequest requestForUpdateOpenGraphObjectWithId:object[@"id"] graphObject:object];

до

return [FBRequest requestForUpdateOpenGraphObjectWithId:object.objectID graphObject:object];

это должно заставить ваш проект снова работать.

Опять же, это не очень хорошее решение, но оно работает :) Emilio

0 голосов
/ 09 сентября 2018

если вам не нужно использовать Facebook-IOS-SDK версии 3.24.4, вы можете просто использовать последнюю версию 4.36.0.

взгляните на ваш Podfile и посмотрите, есть ли какая-либо ссылка на Facebook-IOS-SDK, если есть что-то вроде:

pod 'Facebook-IOS-SDK', '~> 3.0'

Вы можете заменить его на:

pod 'Facebook-IOS-SDK', '~> 4.0'

в противном случае опубликуйте ваш Podfile, и мы сможем посмотреть.

Приветствия

...