【问题标题】:FacebookShare causing compiler error after updateFacebookShare 更新后导致编译器错误
【发布时间】:2017-05-29 17:53:58
【问题描述】:

我刚刚为我的应用程序运行了pod update,现在它无法编译,从LinkShareContent.swiftFacebookShare 给出这些问题。

Cannot assign to property: 'contentDescription' is a get-only property
Cannot assign to property: 'contentTitle' is a get-only property
Cannot assign to property: 'imageURL' is a get-only property

这些是我的 pod 更新中与 Facebook 相关的行:

Installing FBSDKCoreKit 4.23.0 (was 4.22.0)
Installing FBSDKLoginKit 4.23.0 (was 4.22.0)
Installing FBSDKShareKit 4.23.0 (was 4.22.0)
Using FacebookCore (0.2.0)
Using FacebookLogin (0.2.0)
Using FacebookShare (0.2.0)

有人知道这个问题吗?我是不是做错了什么?

【问题讨论】:

  • 上传一段代码进行分享

标签: swift facebook cocoapods


【解决方案1】:

关于FBSDKShareLinkContent 的文档,这些属性已被弃用:

@deprecated contentDescription 已从 Graph API 2.9 中弃用。 如需更多信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

@deprecated contentTitle 已从 Graph API 2.9 中弃用。 欲了解更多信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

@deprecated imageURL 已从 Graph API 2.9 中弃用。 欲了解更多信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

您可能应该使用quotecontentURL 来代替它们。

作为临时解决方案,您可以取消阻止文件 LinkShareContent.swift 并直接删除以上行,直到 Facebook 发布任何更新。

【讨论】:

  • 谢谢,解决了!
  • 这也解决了我的问题
  • 这里有同样的问题。您能否详细说明需要采取哪些步骤?由于此代码位于库RCTFBSDK 库中,我可以编辑它们而不用担心它被覆盖吗?我可以注释掉整个FBSDKShareLinkContent 代码块吗?无论如何,我什至不在我的项目中使用此功能。
  • 我建议将此答案与@Brigadier 答案混合,创建 sdk 的分支并评论这些属性,然后只需指向您的存储库,如果您直接在项目 podlock 文件中断处更改这些。
【解决方案2】:

我不认为引用 Github 用户 1amageek 的 repo 与

pod 'FacebookShare', :git => 'https://github.com/1amageek/facebook-sdk-swift'

是个好主意,1amageek 可能是世界上最了不起的开发者,但仍会删除他/她的 Facebook Swift SDK 分支

在修复之前,您应该将 Podfile 更改为

pod 'FacebookCore', '~> 0.2'
pod 'FacebookLogin', '~> 0.2'
pod 'FacebookShare', '~> 0.2'
pod 'FBSDKCoreKit', '~> 4.22.1'
pod 'FBSDKLoginKit', '~> 4.22.1'
pod 'FBSDKShareKit', '~> 4.22.1'

然后再次运行pod update

请注意,此代码并未添加“重复”的 Pod(较旧的 FBSDK[Core etc] + 较新的 Facebook[Core etc]),代码只是完全明确地说明了您正在安装的 Pod。如果您仅列出 pod FacebookCoreFacebookLoginFacebookShare,则 FBSDK 将由 Cocoapods 作为依赖项安装。

参考:https://github.com/facebook/facebook-sdk-swift/issues/157

【讨论】:

  • 谢谢 - 这对我有用。我能问你“如果你的 Podfile 中只有 FacebookCore、FacebookLogin 和 FacebookShare,那么将安装 FBSDK”是什么意思?
  • @cheznead 我更新了我的那部分答案以尝试更有意义,如果您仍然不清楚,请告诉我
【解决方案3】:

用这个替换你的 Podfile 内容:

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare', :git => 'https://github.com/1amageek/facebook-sdk-swift'

【讨论】:

  • 你能告诉我具体是做什么的吗?
  • @JonathanTuzman 它可以让您编译您的项目而不会出现您发布的错误。这是一个用 Swift 编写的 Facebook SDK(目前处于测试阶段)。
  • 这是第三方repo的荣誉吗?我们可以相信它吗?
  • @RobertYiJiang 是的,它是“第三方”,不,我认为不应该依赖它
猜你喜欢
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
相关资源
最近更新 更多