Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios RestKit-从Rails应用程序获取JSON数组_Ios_Objective C_Json_Get_Restkit 0.20 - Fatal编程技术网

Ios RestKit-从Rails应用程序获取JSON数组

Ios RestKit-从Rails应用程序获取JSON数组,ios,objective-c,json,get,restkit-0.20,Ios,Objective C,Json,Get,Restkit 0.20,我想通过我的iOS应用程序获取此JSON数据:。。。。RestKit试图从url获取这些用户,但返回0个对象,并表示“在搜索的关键路径中未找到可映射的表示形式。没有响应描述符与加载的响应匹配。” 请帮我找出我遗漏了什么或做错了什么!我已经为此奋斗了好几个星期了 我有Xcode 5.0.2,我成功地安装了带有Cocoapods的RestKit和一个如下所示的pod文件: platform :ios, '6.0' pod 'RestKit', '~> 0.22.0' pod 'RestKit/

我想通过我的iOS应用程序获取此JSON数据:。。。。RestKit试图从url获取这些用户,但返回0个对象,并表示“在搜索的关键路径中未找到可映射的表示形式。没有响应描述符与加载的响应匹配。”

请帮我找出我遗漏了什么或做错了什么!我已经为此奋斗了好几个星期了

我有Xcode 5.0.2,我成功地安装了带有Cocoapods的RestKit和一个如下所示的pod文件:

platform :ios, '6.0'
pod 'RestKit', '~> 0.22.0'
pod 'RestKit/Testing'
pod 'RestKit/Search'
我的AppDelegate.m文件如下(didFinishLaunchingWithOptions方法):

在启动应用程序时首先加载的视图控制器的viewDidLoad方法中有以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    RKObjectManager *manager = [RKObjectManager sharedManager];
    [manager getObjectsAtPath:@"/users"
                   parameters:nil
                      success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
    {
        NSLog(@"Loaded databases: %@", [mappingResult array]);
    }
                      failure:^(RKObjectRequestOperation *operation, NSError *error)
    {
        NSLog(@"Error: %@", [error localizedDescription]);
    }];
 // Do any additional setup after loading the view, typically from a nib.
}
你必须:

  • 创建一个用户类
  • 为用户类创建映射
  • 创建一个响应描述符 伪代码可能看起来像:

    @interface User : NSObject
    @property (nonatomic, copy) NSNumber *userID;
    @property (nonatomic, copy) NSString *name;
    ...
    @end
    
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[User class]];
    [mapping addAttributeMappingsFromDictionary:@{
                                                  @"name":   @"name",
                                                  @"id":     @"userID"
                                                  ...
                                                  }];
    
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                            method:RKRequestMethodAny
                                                                                       pathPattern:nil
                                                                                           keyPath:nil
                                                                                       statusCodes:nil];
    ...
    RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request
                                                                        responseDescriptors:@[responseDescriptor]];
    
    [operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
        NSLog(@"The public timeline Tweets: %@", [result array]);
    } failure:nil];
    
    [operation start];
    

    看看例子

    那么“RKObjectRequestOperation*operation…”部分及其下面的部分是否仍在该用户类中?“[操作开始]”代码何时运行?
    @interface User : NSObject
    @property (nonatomic, copy) NSNumber *userID;
    @property (nonatomic, copy) NSString *name;
    ...
    @end
    
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[User class]];
    [mapping addAttributeMappingsFromDictionary:@{
                                                  @"name":   @"name",
                                                  @"id":     @"userID"
                                                  ...
                                                  }];
    
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                            method:RKRequestMethodAny
                                                                                       pathPattern:nil
                                                                                           keyPath:nil
                                                                                       statusCodes:nil];
    ...
    RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request
                                                                        responseDescriptors:@[responseDescriptor]];
    
    [operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
        NSLog(@"The public timeline Tweets: %@", [result array]);
    } failure:nil];
    
    [operation start];