我有一个核心数据迁移的问题,它以我不理解的方式失败。
我有一个从旧版本数据模型的迁移路径,看起来像这样:
我正在整合一个集成测试来运行从 v1 到当前的迁移。我写了一个可以查询当前商店的小 helper ,并给定一个模型,运行正确类型的迁移。这或多或少奏效了,但我在自定义迁移步骤中遇到了一个我在概念上不理解的错误。
我正在使用 NSMigrationManager::migrateStoreFromURL其中有以下描述:
将指定源 URL 的商店迁移到目标 URL 的商店,执行映射模型中的所有映射。商店必须存在于源 URL 中;如果目标 URL 上不存在商店,则会创建一个(否则迁移将附加到现有商店。)调用此方法将对源模型和目标模型(以及映射模型)执行兼容性检查。如果错误在验证或迁移过程中发生,此方法将返回 NO。
测试用例复制到 v1 sqlite 存储并成功自动迁移到 v3,然后在自定义迁移时失败并出现此错误:
NSUnderlyingError: Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)"
UserInfo=0x210d740 {metadata={ NSPersistenceFrameworkVersion = 419; NSStoreModelVersionHashes = { lots of hashes that would be noise in this post...}; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers = ( "" ); NSStoreType = SQLite; NSStoreUUID = "0D2C0907-5F60-4EED-A61B-E726EEB0DA68"; "_NSAutoVacuumLevel" = 2; }, reason=The model used to open the store is incompatible with the one used to create the store
所以,回顾一下,我只有源存储,它已自动迁移到 v3。我没有目的地商店,我希望依靠 NSMigrationManager 来创建目的地商店。由于模型与不存在的商店不匹配,迁移将失败对我来说没有意义。有什么想法吗?
只是为了额外的上下文,在调试时,我已经验证我正在将所有参数的正确实例传递给该方法。源模型和目标模型已经加载,用于自定义迁移的映射模型是通过查询源模型和目标模型从测试包中加载的(一个有希望的结果,因为如果你有任何错误,这将失败),以及 URL 的对于 sqlite 商店看起来不错。
最佳答案
首先,确保将 -com.apple.CoreData.MigrationDebug 1 添加到 Xcode 方案中启动时传递的参数中。然后注意不要相信输出!
匹配部分模型和映射模型存在问题,显然是由于不正确的哈希值,不影响轻量级迁移。我自己目前正在与此作斗争,但我一直无法隔离触发此问题的条件,因此如果您能够隔离问题,请提交详细的错误!
如果您可以访问 iOS 7 测试版,那里的调试输出可能会更有帮助。在 iOS 6 中,调试输出的哈希值始终在映射模型和托管对象模型之间匹配,因此调试输出中显然存在错误。使用 iOS 7,如果这是您的问题,您可以隔离哪些实体不匹配,并隔离触发问题的特征(我到目前为止无法做到)。
就像完整性检查一样,您可能想尝试在版本 3 和版本 4 之间生成一个新的、干净的、原始的映射模型,不进行任何编辑,以确保您的映射模型和实际使用的模型之间没有任何不同步生成商店。您也可以在当前使用轻量级迁移的两个模型之间尝试相同的方法,以查看在这些情况下是否会出现问题,如果这是由于哈希值错误,则可能是预期的。
关于ios - 核心数据自定义迁移失败 : Can't add destination store,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494180/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="