尝试重建传统的IOS应用程序,在Facebook-IOS-SDK Cocoapod中获取错误

问题描述 投票:1回答:2

我被要求重建使用Facebook-IOS-SDK的现有IOS应用程序。该应用程序至少5年,所以我希望不推荐使用的东西。我对XCode和IOS的经验有限,但我不是专家。我从来没有使用过cocapods直到今天。我安装了cocoapods并运行了pod init。 Facebook-IOS-SDK版本3.24.4加载没有错误(其他pod也包括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版本,并且我无法更改它,那么(大型)项目中是否还需要更新其他依赖项?

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
xcode cocoapods facebook-ios-sdk
2个回答
5
投票

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

从以下地址更改370行:

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

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

这应该让你再次运行项目。

再次,这不是一个很好的解决方案,但它的工作原理:) Emilio


0
投票

如果您不需要使用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'

否则发布你的Podfile,我们可以看看。

干杯

© www.soinside.com 2019 - 2024. All rights reserved.