【问题标题】:Getting a section of an NSString获取 NSString 的一部分
【发布时间】:2011-09-03 04:34:44
【问题描述】:

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

{
“种类”:“urlshortener#url”,
"id": "http://goo.gl/something",
"longUrl": "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;

【问题讨论】:

  • 你确定返回的值真的是一个字符串,而不是字典吗?好像是一本字典。
  • 嗯,我不确定当我做
  • 其实它肯定是一个字符串,我尝试将它设置为字典,但不起作用。
  • 看起来像 JSON 返回 - 使用 JSON 解析库之一可能更容易。
  • 你能帮忙处理 JSON 吗? :)

标签: objective-c url nsstring url-shortener goo.gl


【解决方案1】:

您绝对需要将其转换为 NSDictionary(该 JSON 语法适用于字典或对象,但是您想调用它。

Objective-C 的 google API 支持 JSON 解析以将响应转换为对象。

你可以找到它here

如果您只需要解析 JSON,我建议您使用 JSONkitTouchJSON

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

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

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

NSString *short URL = [object valueForKey:@"id"];

这是与 REST 服务交互的最佳方式。

希望对你有帮助!

【讨论】:

  • 很高兴它有帮助,如果它解决了您的问题,请接受答案,如果您需要更多帮助,请告诉我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多