首页 > 解决方案 > 如何修复:PFLogger 类在两者中都实现/PFFile 类在两者中都实现

问题描述

当我在模拟器上运行我的工作区时,我收到消息“在(路径)和(路径)中都实现了类 PFFile/PFLogger。将使用两者之一。哪个未定义。”

我不知道如何解决这个问题。我已经尝试过清洁和重置。

objc[7398]: Class PFFile is implemented in both
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/PhotoFoundation.framework/PhotoFoundation (0x11fdaf1b8)
and
/Users/Sven/Library/Developer/CoreSimulator/Devices/20F88AC5-6C5F-4492-8324-9205B54FB32C/data/Containers/Bundle/Application/8DD1D026-2D96-49E1-A485-6FCBD9899005/FitTip.app/Frameworks/Parse.framework/Parse (0x108c27408).
One of the two will be used. Which one is undefined.
objc[7398]: Class PFLogger is implemented in both
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/PhotoFoundation.framework/PhotoFoundation (0x11fdaff28)
and
/Users/Sven/Library/Developer/CoreSimulator/Devices/20F88AC5-6C5F-4492-8324-9205B54FB32C/data/Containers/Bundle/Application/8DD1D026-2D96-49E1-A485-6FCBD9899005/FitTip.app/Frameworks/Parse.framework/Parse (0x108c279f8).
One of the two will be used. Which one is undefined.

标签: xcodeparse-platformparse-server

解决方案


原因

您看到此错误是因为 Parse 和 PhotoFoundation 都有名为PFFile和的文件PFLogger。在 Objective-C 中,您的程序不能有两个共享相同类名的类。这也是 Apple 提倡为您自己的类名使用三个字母前缀的部分原因。Apple 自己的框架总是使用两个字母前缀,因此与 PhotoFoundation 相关的类有一个PF前缀。

不幸的是,在这种情况下,Parse 还选择PF在他们构建的库中的所有类中使用前缀。单独来看,这不会造成问题,但是当其他框架出现时,就会存在命名空间冲突的风险(这正是这里发生的情况)。

解决方案

您只需确保不使用相同的名称即可避免命名空间冲突。在您的情况下,您不拥有这些类中的任何一个,因此它并不那么简单。幸运的是, Parse SDK GitHub 页面上已经报告了此问题,并且已在最新版本的 Parse SDK (1.17.2) 上实施了修复。Parse 的PFFilePFLogger分别重命名为PFFileObjectPFSystemLogger

您的项目中可能安装了旧版本的 Parse SDK。这可以通过进入项目的根文件夹并Podfile.lock在任何文本编辑器中打开来验证。您可以看到 CocoaPods 当前安装了哪个版本的库。Runpod update Parse和 CocoaPods 应该将它更新到最新版本。

TL;博士pod update Parse。如果失败:pod repo update,pod install


推荐阅读