Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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使用web服务_Ios_Web Services_Restkit - Fatal编程技术网

Ios 使用RESTKIT使用web服务

Ios 使用RESTKIT使用web服务,ios,web-services,restkit,Ios,Web Services,Restkit,我是RESTKIT的初学者,最近才在ray教程中的foursquare公共api上进行了测试 虽然我了解了它的要点,但有一些部分我不明白,我希望能找到它的指针,这样我就可以使用我自己的web服务了 - (void)viewDidLoad { [super viewDidLoad]; RKURL *baseURL = [RKURL URLWithBaseURLString:@"https://api.Foursquare.com/v2"]; RKObjectManager

我是RESTKIT的初学者,最近才在ray教程中的foursquare公共api上进行了测试

虽然我了解了它的要点,但有一些部分我不明白,我希望能找到它的指针,这样我就可以使用我自己的web服务了

- (void)viewDidLoad
{
    [super viewDidLoad];

    RKURL *baseURL = [RKURL URLWithBaseURLString:@"https://api.Foursquare.com/v2"];
    RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
    objectManager.client.baseURL = baseURL;

    RKObjectMapping *venueMapping = [RKObjectMapping mappingForClass:[Venue class]];
    [venueMapping mapKeyPathsToAttributes:@"name", @"name", nil];
    [objectManager.mappingProvider setMapping:venueMapping forKeyPath:@"response.venues"];

    [self sendRequest];
}
我如何改变

[venueMapping mapKeyPathsToAttributes:@"name", @"name", nil];
[objectManager.mappingProvider setMapping:venueMapping forKeyPath:@"response.venues"];
为了适应我自己的webMethod?我的webMethod如下所示

目前,我将文件上传到IIS进行测试,并使用IP for web服务。我经常更换工作区域,因此我将其指定为myIPAddress以便于沟通

-我的服务代码已更改编辑:现在返回JSON

    [WebMethod]
    [ScriptMethod( ResponseFormat = ResponseFormat.Json)]
    public void testTextJSON()
    {
        string text = "Testing for Json!";
        List<string> arrayList = new List<string>();
        arrayList.Add(text); 
        JavaScriptSerializer js = new JavaScriptSerializer();
        string name = js.Serialize(arrayList);  
        Context.Response.Write(name); 
    }

编辑n+1-这里是我的一些错误消息,也许有人可以告诉我哪里出了问题

2012-11-25 06:49:20.925 fourSquareAPI[352:12e03] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x8354430> valueForUndefinedKey:]: this class is not key value coding-compliant for the key venues.'
有人能教我怎么做吗??任何帮助都将不胜感激,我真的很想学习如何使用RESTKIT来使用Web服务

key path response.viouses是指向属性的路径,该属性与JSON或XML格式的服务器响应相关。在这种情况下,服务器返回具有关键位置的响应。这很可能是您将应用映射的场地列表。您必须根据您的服务器响应进行调整

如果要在映射之前处理特定值,请使用此函数:

- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData; {
  if([*mappableData valueForKey:@"result"] != nil){
    [*mappableData removeObjectForKey:@"result"]; //This key won't be mapped now
  }
}

所以假设我的服务返回一个简单的字符串,我还需要keypath吗?映射是基于键值对完成的。如果服务器只返回一个值,它将不会被映射。我明白了,我明白了,非常感谢!本教程的解释往往会跳过这些细节和信息,即使在阅读和操作之后也无法理解大部分组件。没问题!如果您的应用程序将使用来自服务器的大量数据,我强烈建议您将所有内容格式化为JSON或XML。这会让你的生活更轻松。对不起,还有一个问题。我们必须手动将格式设置为JSON吗?或者返回数据自动设置为JSON。我知道RestKit有JSON解析器,但不确定服务返回数据格式。
2012-11-25 06:49:20.925 fourSquareAPI[352:12e03] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x8354430> valueForUndefinedKey:]: this class is not key value coding-compliant for the key venues.'
2012-11-25 06:52:47.495 fourSquareAPI[368:11603] response code: 200
2012-11-25 06:52:47.499 fourSquareAPI[368:12e03] W restkit.object_mapping:RKObjectMapper.m:87 Adding mapping error: Could not find an object mapping for keyPath: ''
2012-11-25 06:52:47.499 fourSquareAPI[368:12e03] E restkit.network:RKObjectLoader.m:231 Encountered errors during mapping: Could not find an object mapping for keyPath: ''
2012-11-25 06:52:47.502 fourSquareAPI[368:11603] Error: Could not find an object mapping for keyPath: ''
- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData; {
  if([*mappableData valueForKey:@"result"] != nil){
    [*mappableData removeObjectForKey:@"result"]; //This key won't be mapped now
  }
}