Objective c 找不到键路径的对象映射:'';
我正在尝试使用RestKit与提供新闻项目的web服务进行通信。我研究了大量的文档,并在此基础上编写了这段代码Objective c 找不到键路径的对象映射:'';,objective-c,ios,json,restkit,jsonkit,Objective C,Ios,Json,Restkit,Jsonkit,我正在尝试使用RestKit与提供新闻项目的web服务进行通信。我研究了大量的文档,并在此基础上编写了这段代码 // // NewsViewController_iPhone.m #import "NewsViewController_iPhone.h" #import <RestKit/RestKit.h> #import <RestKit/CoreData/CoreData.h> #import "NewsPost.h" @implementation News
//
// NewsViewController_iPhone.m
#import "NewsViewController_iPhone.h"
#import <RestKit/RestKit.h>
#import <RestKit/CoreData/CoreData.h>
#import "NewsPost.h"
@implementation NewsViewController_iPhone
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:@"http://192.168.0.197:3000"];
RKObjectMapping* newsPostMapping = [RKObjectMapping mappingForClass:[NewsPost class]];
[newsPostMapping mapKeyPath:@"title" toAttribute:@"title"];
[newsPostMapping mapKeyPath:@"body" toAttribute:@"body"];
[newsPostMapping mapKeyPath:@"image" toAttribute:@"image"];
[newsPostMapping mapKeyPath:@"date" toAttribute:@"date"];
[manager.mappingProvider setMapping:newsPostMapping forKeyPath:@"news_items"];
[manager loadObjectsAtResourcePath:@"/news.json"delegate:self];
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error
{
NSString *stringError = @"Ett problem uppstod vid hämtning av nyheter";
NSLog(stringError);
/*UIAlertView *alert = [[UIAlertView alloc] initWithTitle:stringError];
[alert show];
[alert release];*/
}
- (void)request:(RKRequest*)request didLoadResponse:
(RKResponse*)response {
if ([request isGET]) {
if ([response isOK]) {
NSLog(@"Retrieved JSON: %@", [response bodyAsString]);
}
} else if ([request isPOST]) {
if ([response isJSON]) {
NSLog(@"Got a JSON response back from our POST!");
}
}
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSLog(@"%@", objects);
}
但这对我来说没有多大意义。有人知道问题出在哪里吗?我认为在访问下面的关键路径之前,必须先用
设置映射:forKeyPath:
另外,您在
设置映射
方法中使用了字符串@“news\u items”
。但是,在JSON提要中,它会显示@“news\u posts”
这很尴尬。非常感谢你。这根绳子的校正解决了我的问题。
2011-10-10 15:57:40.807 App[94979:207] Retrieved JSON: {"news_posts":[{"title":"test title","body":"test body","image":"/uploads/post/image/1/app_iPhone.png","date":"10/10 2011"}]}
2011-10-10 15:57:40.808 App[94979:7507] W restkit.object_mapping:RKObjectMapper.m:74 Adding mapping error: Could not find an object mapping for keyPath: ''
2011-10-10 15:57:40.809 App[94979:7507] E restkit.network:RKObjectLoader.m:190 Encountered errors during mapping: Could not find an object mapping for keyPath: ''
2011-10-10 15:57:40.809 App[94979:7507] Ett problem uppstod vid hämtning av nyheter