尝试重建旧版IOS应用程序,Facebook-IOS-SDK Cocoapod中出现错误

时间:2018-09-08 14:56:20

标签: xcode cocoapods facebook-ios-sdk

有人要求我重建一个使用Facebook-IOS-SDK的现有IOS应用。该应用程序至少已使用5年,所以我希望一切都已弃用。我在XCode和IOS方面的经验有限,但距离专家还很远。直到今天我从未使用过鳕鱼。我安装了cocoapods,并运行了pod init。没有错误地加载了Facebook-IOS-SDK版本3.24.4(也包括其他Bod,也没有错误)。

我已经阅读了有关版本的迁移说明on the FB dev page,这意味着我应该能够使用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>'

此错误在cocoapod代码FBRequest.m中,而不在我的客户代码中。此代码被标记为只读。如果此正确的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 :(得分:5)

我发现的唯一讨厌的解决方案是手动更改FBRequest.m中的代码。

将第370行更改为:

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

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

这应该使您的项目再次运行。

同样,这不是一个很好的解决方案,但是它可以工作:) 埃米利奥(Emilio)

答案 1 :(得分:0)

如果您不需要使用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,我们可以看看。

欢呼