- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正面临着一些神秘的事情。我在 NSManagedObject 子类“ReinspectionTask”上有一个 bool 属性。属性为“isOpen”,表示任务是否还需要完成。在 Core Data 中,属性类型设置为 bool 值。该属性被声明为 NSNumber。我从服务器中提取 JSON,它看起来像这样:
[
{
"jobID":"73",
"address":"500 17th Ave. ",
"city":"Santa Cruz",
"state":"California",
"inspections":[
{
"inspectionID":"186",
"inspectionType":"Foundation",
"mediaKey":"777",
"hasTasks":true,
"requestSubmitted":false,
"reinspectionTasks":[
{
"taskID":"75",
"title":"Foundation re-inspection item",
"requestText":"Need a photo of <something>",
"isOpen":false
},
"wasApproved":false,
"isScheduled":false,
"hasAvailableTimes":false,
"availableTimes":[]
]
}
]
}
]
然后我使用带有以下代码的 RestKit 将 JSON 映射到我的托管对象模型:
RKManagedObjectMapping *jobMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Job"];
RKManagedObjectMapping *inspectionMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Inspection"];
RKManagedObjectMapping *reinspectionTaskMapping = [RKManagedObjectMapping mappingForEntityWithName:@"ReinspectionTask"];
jobMapping.primaryKeyAttribute = @"jobID";
[jobMapping mapKeyPath:@"address" toAttribute:@"address"];
[jobMapping mapKeyPath:@"city" toAttribute:@"city"];
[jobMapping mapKeyPath:@"state" toAttribute:@"state"];
[jobMapping mapKeyPath:@"jobID" toAttribute:@"jobID"];
[jobMapping mapRelationship:@"inspections" withMapping:inspectionMapping];
[[RKParserRegistry sharedRegistry] setParserClass:[[RKParserRegistry sharedRegistry]
parserClassForMIMEType:RKMIMETypeJSON]
forMIMEType:@"text/html"];
inspectionMapping.primaryKeyAttribute = @"inspectionID";
[inspectionMapping mapKeyPathsToAttributes:
@"inspectionID", @"inspectionID",
@"inspectionTime", @"inspectionTime",
@"inspectionType", @"inspectionType",
@"inspector", @"inspector",
@"isScheduled", @"isScheduled",
@"mediaKey", @"mediaKey",
@"requestSubmitted", @"requestSubmitted",
@"hasAvailableTimes", @"hasAvailableTimes",
@"availableTimes", @"availableTimes",
@"hasTasks", @"hasTasks",
@"wasApproved", @"wasApproved", nil];
[inspectionMapping mapRelationship:@"reinspectionTasks" withMapping:reinspectionTaskMapping];
[inspectionMapping mapRelationship:@"job" withMapping:jobMapping];
reinspectionTaskMapping.primaryKeyAttribute = @"taskID";
[reinspectionTaskMapping mapKeyPath:@"taskID" toAttribute:@"taskID"];
[reinspectionTaskMapping mapKeyPath:@"title" toAttribute:@"title"];
[reinspectionTaskMapping mapKeyPath:@"requestText" toAttribute:@"requestText"];
[reinspectionTaskMapping mapKeyPath:@"isOpen" toAttribute:@"isOpen"];
[reinspectionTaskMapping mapRelationship:@"inspection" withMapping:inspectionMapping];
[objectManager.mappingProvider setMapping:jobMapping forKeyPath:@"job"];
[objectManager.mappingProvider setMapping:inspectionMapping forKeyPath:@"inspection"];
[objectManager.mappingProvider setMapping:reinspectionTaskMapping forKeyPath:@"reinspectionTasks"];
这在大多数情况下都可以正常工作。但是,我对 ReinspectionTask 上的 isOpen BOOL 属性有疑问。当我将该值记录到控制台时,它返回 null。奇怪的是,据我所知,我已经像 hasTasks、isScheduled 等一样设置了该属性。这些 BOOL 属性工作正常。
我应该提到 Inspection 与 ReinspectionTasks 的关系是一对多关系。这种关系是否需要我采取一些其他步骤来设置 RestKit 中的对象映射?
或者可能与 ReinspectionTask 对象在 JSON 结构中嵌套得更深有关?
我们非常欢迎任何想法或建议。非常感谢。
最佳答案
好吧,只有两个问题很容易回答。
Does that kind of relationship require that I take some other step in setting up the object mapping in RestKit?
不,你似乎做得对。
Or might it have to do with the fact that the ReinspectionTask object is nested deeper in the JSON structure?
不,这不是问题所在。正如我在上面的评论中提到的,我怀疑你做错了什么。 BOOL 属性永远不应在控制台中显示为 null。我会检查目标对象的所有属性,并检查它们在数据模型和实体类(如果有的话)中的类型是否正确。我还会在您的数据模型中检查此属性的默认值
关于objective-c - 使用 RestKit 将 bool 属性从 JSON 映射到 NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024836/
我使用 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
我是一名优秀的程序员,十分优秀!