gpt4 book ai didi

ios - 具有相同名称的 RLMObject 子类不能在同一目标中包含两次

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:09 28 4
gpt4 key购买 nike

我在测试 Realm 时遇到问题。如果我将我的目标文件包含到测试目标中,我会在执行测试时收到此错误:

   file:///path/project-iOS/project-iOS/DataManager.m: test failure: -
[SingleHouseDb_Test testPerformanceExample] failed: failed: caught
"RLMException", "RLMObject subclasses with the same name cannot be
included twice in the same target. Please make sure 'StringObject' is only linked
once to your current target."

但如果我从目标中删除文件,它根本无法构建!

 Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_DVMap", referenced from:
objc-class-ref in DataManager.o
"_OBJC_CLASS_$_DVHouse", referenced from:
objc-class-ref in DataManager.o
"_OBJC_CLASS_$_DVReport", referenced from:
objc-class-ref in DataManager.o
objc-class-ref in ReportsViewController.o
"_OBJC_CLASS_$_DVReportPhoto", referenced from:
objc-class-ref in DataManager.o
"_OBJC_CLASS_$_DVUserProfile", referenced from:
objc-class-ref in DataManager.o
objc-class-ref in ReportsViewController.o
"_OBJC_CLASS_$_StringObject", referenced from:
objc-class-ref in DataManager.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我的 Pod 文件:

platform :ios, '8.0'

use_frameworks!

target 'my-iOS' do
pod 'AFNetworking'
pod 'Realm'
pod 'SDWebImage'
end

target 'my-iOSTests', exclusive: true do
pod 'Realm/Headers'
end

target 'my-iOSUITests', exclusive: true do
pod 'Realm/Headers'
end

最佳答案

有两种不同的 iOS 测试方法。应用测试逻辑测试。两者对您设置目标的方式都有不同的影响。你不能混合它们,你必须决定两者的一种范式。当您使用框架和 Realm 时,您必须使用前者。

应用测试

它们通常链接到您的应用程序(由build设置 BUNDLE_LOADER 标识)如果它是一个动态库,它将被链接到。在运行时,它们会加载测试主机 (TEST_HOST),这通常是首先在模拟器中启动的应用程序可执行文件。他们通过 dyld 注入(inject)构建的测试包,以便您可以有效地使用每个符号,这些符号在您的应用程序中可传递地使用。如果您在 Xcode 中设置新的测试目标,这就是现在的默认设置。

目标成员(member)

要遵循这种方法,您不得与测试目标共享应用目标代码的目标成员资格。但是您需要确保您的所有模型文件仍然是您的应用程序目标的成员。

因此文件 Object.swift 的目标成员可能如下所示:

Target Membership App Only

或者这样:

Target Membership Framework Only

CocoaPods

使用 CocoaPods,您的 Podfile 应该如下所示:

platform :ios, '8.0'

use_frameworks!

target 'my-iOS' do
link_to 'my-iOS', 'my-iOSTests', 'my-iOSUITests'
pod 'AFNetworking'
pod 'Realm'
pod 'SDWebImage'
end

header 子规范旨在用于使用静态链接时的逻辑测试方法。

另请查看 Realm 文档中关于 Avoid Linking Realm and Tested Code in Test Targets 的章节.

关于ios - 具有相同名称的 RLMObject 子类不能在同一目标中包含两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33750402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com