19

我下载了新的 iOS Parse API (1.6.4) 并尝试构建我的项目。当我这样做时,我收到此错误:

Undefined symbols for architecture arm64" "_BFTaskMultipleExceptionsException", referenced from:
  ___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)
  ___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o) 
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

截屏: 截屏

4

11 回答 11

12

Parse 1.6.4 和 Facebook SDK 3.23 的临时解决方法:

在导入之后和实现部分之前添加到您的 AppDelegate.m 或其他类后面的常量:

NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";

@interface IPAppDelegate ()
@end

@implementation IPAppDelegate

它应该解决问题,直到它在 Parse/Facebook 方面得到解决。

-- 更新:此解决方案仅适用于上面列出的 Facebook 和 Parse SDK 版本,这些版本现在已经过时。

新的 Parse SDK 1.7.4 与新的 Facebook SDK 4.0 一起工作正常,不应该有这样的问题。

于 2015-03-09T09:59:56.173 回答
5

我能够找出任何需要 Parse iOS v1.6.3 的人的 URL。

https://parse.com/downloads/ios/parse-library/1.6.3

我可以确认一切都使用 1.6.3 正确编译。

于 2015-03-06T23:50:08.750 回答
3

配售

NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";

在 Sergey Surkov 建议的 App Delegate 中,在导入和实现之间,然后在构建阶段添加 libstdc++.6.dylib 对我有用。另请查看https://stackoverflow.com/a/27628797/1036945

于 2015-04-06T01:56:26.523 回答
3

使用 Parse (1.7.4) 和 Facebook (4.2.0) 的最新 SDK 时,我遇到了完全相同的问题。该问题是由 Parse 和 Facebook SDK 中包含的 Bolts.framework 引起的。出于某种原因,Parse 中的 Bolts 框架总是比 Facebook SDK 中包含的更新。

经过多次尝试安装、删除和重新安装这些 SDK,使用拖放方法和通过 Cocoapods,我终于通过以下步骤设法克服了这个问题:

  1. 我从我的项目中完全删除了 Parse、Facebook 和 Bolts 框架的所有实例;
  2. 我按照 Facebook 开发人员页面上的步骤重新添加了 FBSDKCoreKit 框架(以及我的项目需要的 ShareKit 和 LoginKit):https ://developers.facebook.com/docs/ios/getting-started/ 确保不将项目复制到您的项目中。
  3. 我使用拖放方法将 Parse 框架重新添加到项目中。我还添加了 ParseFacebookUtilsV4 框架,因为我需要它来通过 Facebook 登录创建用户。

  4. 这是解决所有问题的最重要步骤:我通过将 Parse 提供的 Bolts.framework 添加到项目中,但确保不要将其复制到项目中(就像使用 FBSDKCoreKit 框架一样,我取消选择“复制项目到目标组的文件夹中。”选项。如果将其复制到项目文件夹,则项目将不会构建。

这些步骤终于解决了我所有的问题。

于 2015-06-15T09:34:44.590 回答
2

如果您使用的是 cocoapods,请尝试pod update Bolts

于 2015-04-08T12:11:22.403 回答
1

EDIT2:FacebookSDK 更新 3.23.2 解决了这个问题,并包括螺栓 1.1.4:https ://developers.facebook.com/resources/facebook-ios-sdk-3.23.2.pkg


编辑:从您的构建设置中删除 -ObjC "Other Linker Flag"。


如果集成了 Facebook SDK,则 Parse 不需要 Bolts.framework。
自 Facebook iOS SDK 3.14 起,bolts.framework 已包含在内。https://developers.facebook.com/docs/ios/upgrading-3.x

尝试删除您的 bolts.framework 手动实例。

于 2015-03-06T16:08:26.807 回答
0

只是为了直截了当。

该问题是由于 Facebook SDK Bolts 和 Parse bolts 框架之间的 Bolts 框架冲突引起的。解决此问题的临时解决方案是将 Cocoapods 用于您的 Facebook SDK 依赖项,这将在修复工作时有所帮助。

Facebook 已确认该错误并已分配给适当的团队进行修复。

请关注https://developers.facebook.com/bugs/383331175179417/以获取更新。

于 2015-03-17T08:49:31.543 回答
0

确保将 facebook sdk 框架和 bolts 框架(附带 fb sdk)导入到您的项目中。

于 2015-04-01T16:52:43.210 回答
0

i got similar error ("...is not a dylib" and "Undefined symbols for architecture") because i dragged the whole parse folder ("parse-library-1.7.4-2") into my xcode project, when i should have dragged only the frameworks i needed ("Bolts.framework" and "Parse.framework"). deleted the parse folder, dragged over the two frameworks, then everything works as expected :)

于 2015-06-20T07:11:41.453 回答
-1

尝试下载最新的 SDK 并将所有 Parse 框架替换为最新版本。

于 2015-03-25T16:12:36.010 回答
-1

我有同样的问题。将 Bolts 更新到 1.1.4 为我解决了这个问题(Bolts 之前是 1.1.3)。

如果您使用 cocoapods,请将此行更改或添加到您的 podfile

pod 'Bolts', '1.1.4'

如果没有,只需在此处下载:https ://github.com/BoltsFramework/Bolts-iOS/releases

于 2015-03-07T13:08:25.907 回答