尝试重建遗留 IOS 应用程序,在 Facebook-IOS-SDK Cocoapod 中出现错误

Trying to Rebuild a Legacy IOS App, Getting Error in Facebook-IOS-SDK Cocoapod

我被要求重建一个现有的 IOS 应用程序,该应用程序使用 Facebook-IOS-SDK。该应用程序至少已有 5 年历史,因此我预计会被弃用。我对 XCode 和 IOS 的经验有限,但我远非专家。直到今天我才用过 cocapods。我安装了 cocoapods 和 运行 pod init。 Facebook-IOS-SDK ver 3.24.4 加载没有错误(其他 pods 也没有错误,包括 Bolt,没有错误)。

我已阅读有关版本的迁移说明 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>'

此错误在 FBRequest.m cocoapod 代码中,而不是在我的客户代码中。此代码被标记为只读。如果这个 正确的 pod 版本,而我无法更改它,那么(大型)项目中是否还有其他依赖项需要更新?

播客文件:

# 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

如果您不需要使用 Facebook-IOS-SDK ver 3.24.4,您可以直接使用最新版本 4.36.0.

查看您的 Podfile,看看是否有任何对 Facebook-IOS-SDK 的引用,如果有类似于:

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

您可以将其替换为:

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

否则 post 你的 Podfile 我们可以看看。

干杯

我找到的唯一令人讨厌的解决方案是手动更改 FBRequest.m 中的代码。

将第 370 行更改为:

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

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

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

同样,这不是一个很好的解决方案,但它有效:) 埃米利奥