尝试在 iOS 上使用 Restkit - XCode
Posted
技术标签:
【中文标题】尝试在 iOS 上使用 Restkit - XCode【英文标题】:Trying to use Restkit on iOS - XCode 【发布时间】:2012-03-23 20:34:55 【问题描述】:我正在尝试在我的应用程序上使用 RestKit,目前在 github 上使用 master 作为 git 子模块。整个事情已安装并运行。但是,当我尝试从我的 rails 应用程序中获取 JSON 数据时,我在 RestKit 上得到了 BAD_EXC_ACCESS,更具体地说是在 RKObjectLoader.m 的第 365 行。
if ([_delegate respondsToSelector:@selector(request:didLoadResponse:)])
[_delegate request:self didLoadResponse:_response];
不确定这里发生了什么,但我应该假设这是 Restkit 的问题吗?
这是我想要做的:
-(id) init
self = [super init];
if (self)
RKObjectMapping* patientMapping = [RKObjectMapping mappingForClass:[Patient class]];
[patientMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[patientMapping mapKeyPath:@"first_name" toAttribute:@"first_name"];
[patientMapping mapKeyPath:@"middle_initial" toAttribute:@"middle_initial"];
[patientMapping mapKeyPath:@"last_name" toAttribute:@"last_name"];
[patientMapping mapKeyPath:@"email" toAttribute:@"email"];
[patientMapping mapKeyPath:@"password_hint_question" toAttribute:@"password_hint_question"];
[patientMapping mapKeyPath:@"password_hint_answer" toAttribute:@"password_hint_answer"];
[[RKObjectManager sharedManager].mappingProvider setMapping:patientMapping forKeyPath:@"patients"];
return self;
- (void)loadAll
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/ios_patient.json" delegate:self];
所以基本上我实例化这个类并调用 loadAll。我的 ios_patient.json 返回以下 JSON 代码:
"patients": ["id": 1, "first_name": "John", "last_name": "Appleseed", "email": "johnappleseed@apple.com"]
任何帮助将不胜感激。
【问题讨论】:
您可以启用 NSZombieEnabled 以了解有关崩溃的更多信息或使用带有进程 ID 的 malloc_history。 Objective-C 变量通常以驼峰命名,因为它的价值。因此,您可能应该仔细检查您的“first_name”变量是否定义为“NSString *firstName”,并且您的映射是“[patientMapping mapKeyPath:@"firstName" toAttribute:@"first_name"];" 另外,1. 你确定你还没有释放你的代表吗? 2. 你在使用 ARC 吗? 3、你是否实现了RKObjectLoader的委托方法(request:didLoadResponse:)? 【参考方案1】:您可以轻松使用 ARC 和 RestKit,只需在 RestKit 文件上设置 -fno-objc-arc。
【讨论】:
【参考方案2】:感谢 cmets。事实证明 RestKit 与 ARC 不兼容,是的,我正在使用它。变量被正确映射(即使它们不是驼峰式),并且代表也被正确设置和实现。好在我处于开发过程的早期并且可以回到非 ARC。
【讨论】:
以上是关于尝试在 iOS 上使用 Restkit - XCode的主要内容,如果未能解决你的问题,请参考以下文章
restkit JSON ios - putObject - 发送类型信息