- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个单元测试来检查我的 CoreData 对象是否正确更新。问题是,当我尝试使用具有地址的数据更新没有地址的项目时,出现验证错误。当项目已经有地址时,一切都按预期进行,我已经标记了添加地址并通过测试的代码
我的模型结构如下:
[Project]
-localId [int]
-serverId [int]
-name [string]
-address [Address]
[Address]
-lineOne [string]
-lineTwo [string]
-city [string]
-state [string]
-country [string]
-zip [string]
-project [Project]
项目和地址在 CoreData 中具有一对一的关系,并且所有属性和关系都标记为可选。我在 RestKit 中使用 serverId 和 lineOne 作为标识。
这是有问题的单元测试:
// Create an object to match our criteria
Project *project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:[RKManagedObjectStore defaultStore].persistentStoreManagedObjectContext];
[project setValue:@(1) forKey:@"serverId"];
//----IF I ADD THESE TWO LINES THE TEST PASSES----
//Address *address = [NSEntityDescription insertNewObjectForEntityForName:@"Address" inManagedObjectContext:[RKManagedObjectStore defaultStore].persistentStoreManagedObjectContext];
//[project setValue:address forKey:@"address"];
NSDictionary* fakeJson = @{@"id" : @1, @"name" : @"TEST", @"address" : @{@"line_1":@"123 Apple Street",@"line_2":@"Apartment 4",@"city":@"New York",@"country":@"USA",@"state":@"New York",@"zip":@"12345"}};
RKMappingTest* idTest = [RKMappingTest testForMapping:[Project showResponseMapping] sourceObject:fakeJson destinationObject:nil];
[idTest setManagedObjectContext:[RKManagedObjectStore defaultStore].persistentStoreManagedObjectContext];
[idTest performMapping];
//Assert that the destinationObject for the mapping is the existing one
XCTAssertEqualObjects(project, idTest.destinationObject, @"Expected to match the project, but did not");
这是抛出的错误:
2014-09-03 16:14:28.599 TestProject[3692:607] E restkit.object_mapping:RKMappingOperation.m:342 Validation failed while mapping attribute at key path 'address' to value <Address: 0x115b57a0> (entity: Address; id: 0x115b1e20 <x-coredata:///Address/t5016F936-C646-4CD0-84EC-366D2A8C7F056> ; data: {
city = "New York";
country = USA;
lineOne = "123 Apple Street";
lineTwo = "Apartment 4";
localId = nil;
project = nil;
state = "New York";
zip = 12345;
}). Error: The operation couldn’t be completed. (Cocoa error 1550.)
2014-09-03 16:14:28.600 Closeout[3692:607] E restkit:RKLog.m:151 Validation Error
NSLocalizedDescriptionKey: The operation couldn’t be completed. (Cocoa error 1550.)
NSValidationKeyErrorKey: address
NSValidationPredicateErrorKey: (null)
NSValidationObjectErrorKey:
<Project: 0x115a4e50> (entity: Project; id: 0x115aa980 <x-coredata:///Project/t5016F936-C646-4CD0-84EC-366D2A8C7F055> ; data: {
address = nil;
localId = nil;
name = TEST;
serverId = 1;
})
由于如果我向初始 CoreData 对象添加空白地址,测试就会通过,因此问题不在于映射或地址数据无效。我还可以从日志中看出新的 Address 对象已正确创建,只是无法通过关系链接它们。
感谢您的帮助。
最佳答案
经过两天的绞尽脑汁解决了这个问题。问题是当您在新项目上选中“使用 CoreData”框时,Xcode 生成的 AppDelegate 中的代码。它正在创建一个 CoreData 堆栈,然后我们为单元测试创建自己的堆栈,当 RestKit 拉取数据时,它会尝试连接来自不同上下文的对象(即使我们在执行的每个操作中都指定了一个上下文)。删除 AppDelegate 中所有 CoreData 生成的代码解决了该问题。
关于ios - 使用嵌套数据更新 CoreData 对象时 RestKit 验证失败(Cocoa 错误 1550),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25653081/
我使用 RestKit 与 REST api 进行交互。对于某些操作,例如 HTTP PUT/POST/DELETE,我只关心响应状态代码(200 或 500 等),而不关心响应数据,即使 API 确
我在客户端和服务器端都有一个这样的响应对象: 客户端: //BaseResponse.h @interface BaseResponse : NSObject{ NSString *code;
我正在尝试将 RestKit 0.20 集成到我的项目中,例如,我使用 google rss 阅读器作为示例项目。 这是对 Xml 的响应 / /类别> & 这是我必须从中获取数据的 Xml。 RKO
我很难使用 CocoaPods 将 RestKit 安装到我的项目中。我收到未找到的错误。 我的 Pods.xcconfig 看起来像这样: GCC_PREPROCESSOR_DEFINITIONS
大多数 RESTful API 都会路由对资源的访问,例如 Rabbit 对象,如下所示: GET /rabbits <--- GET all rabbits.
问题 在 iOS 上完成 Restkit 的安装说明后,我收到 Apple Mach-o 链接器错误: 我的流程 我尝试按照此处的 Restkit 安装说明进行操作:https://github.co
我完全按照此处找到的这些步骤操作: http://www.raywenderlich.com/13097/intro-to-restkit-tutorial 但是....我得到了错误: 这可能是什么原
我正在尝试使用 RestKit 调用需要基本身份验证的端点。 RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[JSNCateg
我想用RestKit ,但我已经使用 Realm.io而不是 CoreData。 是否可以在 Realm.io 之上使用 RestKit? 最佳答案 你当然可以。从 RestKit 取回对象后: //
我没有找到任何方法来设置 restkit 0.20.0 的超时间隔。 任何人都可以帮助增加超时间隔。 谢谢 最佳答案 子类 RKHTTPRequestOperation 和实现方法 - (NSURLR
我正在尝试实现 RESTKit 0.20 操作队列,我在博客上读到 NSOperationQueue 也可用于创建操作队列。我想使用 RestKit 操作队列的 native 方法。 任何人都可以发布
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
我在这里做的事情很奇怪吗? 我的类别得到下载和映射, 产品也像日志记录所说的那样被下载和映射, 但是我的产品在每个分类下都是空的,谢谢! { "productsCategories" : [
我尝试了几乎所有的解决方案,但都不适合我。我在 Xcode 6 上收到此错误。我也更新了 cocoa pod ,也更新了 pod 文件。 安装更新后,我在下面添加了几行: [!] From now o
我正在尝试使用 Jenkins-CI 自动构建一个使用 Restkit 的 iOS 项目,显然,restkit 作为一个项目驻留在主项目中。该项目使用 XCode-IDE 成功构建。 但是当我使用 x
我在 Xcode 6.1 中开发项目。它工作正常,突然提示错误“未找到 Restkit/Restkit.h 文件”。从 $ 更改Architectures 后出现错误(ARCHS_STANDARD_3
我按照 github 上的说明进行操作页面但有问题(肯定是我:P)但是,您知道在 Xcode4 RestKit 中集成/使用的任何好的教程吗? 谢谢! 最佳答案 从此链接下载最新版本 http://r
我在尝试让 RestKit 构建和工作时遇到了麻烦。我收到可怕的“词法或预处理器问题:未找到 RestKit/RestKit.h 文件”消息。我使用 Xcode 4.2,我的项目适用于 iOS。 早些
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:BASE_URL]]; PPPS
有没有办法使用对象管理器访问请求的成功块中的响应数据? [objectManager postObject:[User class] path:@"/users" parameters:nil suc
我是一名优秀的程序员,十分优秀!