我在测试 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 中设置新的测试目标,这就是现在的默认设置。
要遵循这种方法,您不得与测试目标共享应用目标代码的目标成员资格。但是您需要确保您的所有模型文件仍然是您的应用程序目标的成员。
因此文件 Object.swift 的目标成员可能如下所示:
或者这样:
使用 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/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
下面例子中的Nested和Child有什么区别?是否只是同一事物的不同语法?classParentclassNested...endendclassChild 最佳答案 不,它们是不同的。嵌套:Computer之外的“Processor”类只能作为Computer::Processor访问。嵌套为内部类(namespace)提供上下文。对于ruby解释器Computer和Computer::Processor只是两个独立的类。classComputerclassProcessor#Tocreateanobjectforthisc
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只