Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Objective c 获取NSString的一部分_Objective C_Url_Nsstring_Url Shortener_Goo.gl - Fatal编程技术网

Objective c 获取NSString的一部分

Objective c 获取NSString的一部分,objective-c,url,nsstring,url-shortener,goo.gl,Objective C,Url,Nsstring,Url Shortener,Goo.gl,在我现在创建的应用程序中,我使用goo.gl的url缩短器api来缩短url。我几乎可以正常工作了,我可以发送长URL来检索NSString中的短URL,但格式如下: { “种类”:“urlshortener#url”, “id”:”http://goo.gl/something“, “长URL”:http://somethinglonggggg/“ } 我只是想知道是否有一种方法可以从中获取id(短url) 以下是我目前掌握的情况: NSString *longURL = urlText.te

在我现在创建的应用程序中,我使用goo.gl的url缩短器api来缩短url。我几乎可以正常工作了,我可以发送长URL来检索NSString中的短URL,但格式如下:

{
“种类”:“urlshortener#url”,
“id”:”http://goo.gl/something“,
“长URL”:http://somethinglonggggg/“
}

我只是想知道是否有一种方法可以从中获取id(短url)

以下是我目前掌握的情况:

NSString *longURL = urlText.text;
NSData *reqData = [[NSString stringWithFormat:@"{\"longUrl\":\"%@\"}", longURL] dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [NSMutableURLRequest
                                requestWithURL:[NSURL URLWithString:@"https://www.googleapis.com/urlshortener/v1/url"]
                                cachePolicy:NSURLRequestUseProtocolCachePolicy
                                timeoutInterval:20];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:reqData];

NSError *err = [[NSError alloc] init];
NSData *retData = [NSURLConnection sendSynchronousRequest:request
                                        returningResponse:nil
                                                    error:&err];

if([err domain]) return;

NSString *retString = [[NSString alloc] initWithData:retData encoding:NSUTF8StringEncoding];

if([retString rangeOfString:@"\"error\""].length) return;

NSLog(@" longUrl equals %@ ", longURL);
NSLog(@" retString equals %@ ", retString);

urlText.text = retString;

您需要将其转换为NSDictionary(JSON语法用于字典或对象,不管您如何调用它)

google API for Objective-C支持JSON解析,将响应转换为对象

你可以找到它

如果您只需要解析JSON,我建议您选择或

它们都以非常相似的方式工作,你给它们字符串,它们会还给你对象

这些库的个人使用信息可以在各自项目的自述文件中找到,在那里你会发现它们是多么容易使用

然后,您可以使用以下方法访问不同的值:

NSString *short URL = [object valueForKey:@"id"];
这是与REST服务交互的最佳方式


希望有帮助!

你确定返回的值真的是一个字符串,而不是一个字典吗?它似乎是一个字典。嗯,老实说,我不确定,当我确实是一个字符串时,我试图将其设置为一个字典,但不起作用。它看起来像是JSON返回-使用JSON解析库可能更容易你能帮我处理JSON吗?:)我很高兴它帮了你,如果它解决了你的问题,请接受答案,如果你需要更多的帮助,请告诉我!