更新后导致编译错误

时间:2017-05-29 17:53:58

标签: swift facebook cocoapods

我刚刚为我的应用运行了pod update,现在它无法编译,从LinkShareContent.swift中的FacebookShare提出这些问题。

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)

有谁知道这个问题?我做错了吗?

3 个答案:

答案 0 :(得分:26)

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

  

从图API API 2.9中弃用了@deprecated contentDescription。        有关详细信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

     

从图API API 2.9中弃用了@deprecated contentTitle。        有关详细信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

     

从图API API 2.9中弃用了@deprecated imageURL。        有关详细信息,请参阅https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

您应该使用quotecontentURL代替它们。

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

答案 1 :(得分:24)

我不认为用

引用Github用户1 amageek的回购
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

请注意,此代码不添加“重复”窗格(较旧的FBSDK [核心等] +较新的Facebook [核心等]),代码只是完全明确您正在安装的窗格。如果您只列出广告容器FacebookCoreFacebookLoginFacebookShare,则Cocoapods将安装FBSDK作为依赖项。

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

答案 2 :(得分:21)

用以下内容替换您的Podfile内容:

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