JSON的RestKit对象映射

问题描述:

我正在尝试为以下JSON数据创建映射。JSON的RestKit对象映射

{ 
    "Calls": [ 
    { 
     "id": "18", 
     "parent_id": "0", 
     "status": "completed", 
    }, 
    { 
     "id": "19", 
     "parent_id": "0", 
     "status": "completed", 
    }, 
} 

我正在使用以下方法来映射和处理来自委托的响应。当我运行这个时,didLoadObjects方法从未被命中并且没有记录。另外,我确信URL是正确的,URL返回我上面发布的JSON。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    RKLogConfigureByName("RestKit/*", RKLogLevelTrace); 

    RKObjectMapping *callMapping = [RKObjectMapping mappingForClass:[YCMDCall class]]; 

    [callMapping mapKeyPath:@"id" toAttribute:@"call_id"]; 
    [callMapping mapKeyPath:@"parent_id" toAttribute:@"parent_id"]; 
    [callMapping mapKeyPath:@"status" toAttribute:@"status"]; 

    RKObjectManager *manager = [[RKObjectManager sharedManager] managerWithBaseURL:@"http://MYBASEURL/"]; 
    [manager.mappingProvider setMapping:callMapping forKeyPath:@"Calls"]; 
    [manager loadObjectsAtResourcePath:@"RESTOFURL" objectMapping:callMapping delegate:self]; 
} 

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects 
{ 
    NSLog(@"Load collection of Articles: %@", objects); 
} 

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error 
{ 
    NSLog(@"Oh no! Error: %@", [error localizedDescription]); 
} 

此外,如果任何人都可以提供一个例子或指向我在正确的方向将这些结果导入到TableViewController。预先感谢您的帮助。

@interface YCMDCall : NSObject 

@property (nonatomic, retain) NSString* call_id; 
@property (nonatomic, retain) NSNumber* parent_id; 
@property (nonatomic, retain) NSString* status; 

@end 



@implementation YCMDCall 

@synthesize call_id; 
@synthesize parent_id; 
@synthesize status; 

@end 
+0

嗨,你解决了你的问题吗? – Beber 2012-04-03 09:02:45

+0

是的,大多只是忽略了一些简单的东西。 – 2012-04-08 08:25:25

可以在会话对象谁是一个单独的保存reterned NSArray中,然后发布一个通知:

[MySessionObject getInstance].list = objects; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"YCMDCallSuccess" object: nil]; 

在你看来,你可以观察这个通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onYCMDCallSuccess) name:@"YCMDCallSuccess" object:nil]; 

在您的onYCMDCallSuccess方法中,您可以访问会话对象中的数据

// For exemple 
self.myList=[MySessionObject getInstance].list; 

你可以看到这篇文章的更多细节:RestKit 0.9.3 app Structure

希望它可以帮助你。

编辑: 如果您的电话是直接在您的视图控制器,看看你是否添加RKObjectLoaderDelegate

@interface MyTableViewController : UITableViewController <RKObjectLoaderDelegate> 

如果不是,你的回调函数将永远不会被称为:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects; 
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error; 
+0

感谢您的提示。进行了一些更改并发现一些语法错误。现在一切都是固定的。 – 2012-04-08 08:24:47