对核心数据模型进行微小更改后的链接器错误

Posted

技术标签:

【中文标题】对核心数据模型进行微小更改后的链接器错误【英文标题】:Linker error after making minor change to Core Data model 【发布时间】:2015-02-09 02:28:00 【问题描述】:

在通过 CocoaPods 添加 MagicalRecord(我第一次使用 CocoaPods)后,我开始了一个构建良好的新项目。

在构建我的数据模型之后,我收到一条错误消息,告诉我我没有在两个实体之间包含预期的反向关系。我进入数据模型并纠正了这个问题,现在我在重建时收到了这个错误:

Ld /Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Products/Debug-iphonesimulator/ProjectName.app/ProjectName normal x86_64
    cd "/Users/myName/Desktop/Everything from DT 1:20:15/App projects/WMMG/ProjectName"
    export IPHONEOS_DEPLOYMENT_TARGET=8.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Products/Debug-iphonesimulator -F/Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Products/Debug-iphonesimulator -filelist /Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Intermediates/ProjectName.build/Debug-iphonesimulator/ProjectName.build/Objects-normal/x86_64/ProjectName.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-MagicalRecord -framework CoreData -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.1 -lPods -Xlinker -dependency_info -Xlinker /Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Intermediates/ProjectName.build/Debug-iphonesimulator/ProjectName.build/Objects-normal/x86_64/ProjectName_dependency_info.dat -o /Users/myName/Library/Developer/Xcode/DerivedData/ProjectName-ewvswzrvrwxktphioghlirgkuyju/Build/Products/Debug-iphonesimulator/ProjectName.app/ProjectName

ld: library not found for -lPods-MagicalRecord
clang: error: linker command failed with exit code 1 (use -v to see invocation)

该错误似乎明确指出链接器和 pod 存在问题。问题是我没有调试链接器问题的经验,当我发现对类似问题的引用开始谈论“依赖关系”等时,我感到非常不适应。显然没有找到 MagicalRecord 库,但我不知道我所做的更改可能是如何导致问题的,更不确定如何纠正它。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

Core Data 会触发这个很奇怪。要解决链接问题,请尝试输入 pod install(首先 cd 到包含项目工作区的文件夹)。

【讨论】:

刚试了一下,然后退出Xcode,再次启动项目,清理,构建,收到同样的错误信息。 是否也尝试擦除 DerivedData 文件夹?您打开的是 xcworkspace 而不是 xcproject,对吧? 呃,没有。我从 Xcode 启动窗口打开了项目。我应该改为从 finder 打开工作区吗? 好的,我刚刚关闭了项目并打开了工作区。它构建时没有错误,但有 14 个未声明的选择器警告,以前没有,全部来自 3 个 MagicalRecord 文件。 使用 Cocoapods 时,总是使用 xcworkspace。这将同时引入您自己的项目和 pod(它们都是工作区中的子项目)。我很高兴它正在建设中!

以上是关于对核心数据模型进行微小更改后的链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

更改模型后的核心数据迁移

错误:更改核心数据模型后架构 armv7 的重复符号

将旧数据模型文件复制到新项目中进行轻量级核心数据迁移

从 Git 中检索核心数据托管对象模型

我怎样才能明智地处理版本控制和核心数据模型?

迁移后更改核心数据时崩溃