HI, 我正在为我的iphone应用程序创建一个登录屏幕。我使用NSURLConnection方法将用户名和密码发送到php。我可以成功发送登录详细信息到PHP。我的php页面根据登录详细信息返回状态值。
(状态=正常/失败,redirectionUrl = http://www.balalaa.com)
在DidReceiveData方法中,如果我将NSData转换为字符串,我将获得以下字符串以便成功登录
“状态=确定& url = http://www.balalaa.com”。
有没有办法获取STATUS和url的值,而不使用NSPredict。有没有其他方法可以将NSData转换为NSDictionary来获取STATUS键的值?
提前致谢。 拉姆
答案 0 :(得分:2)
NSString *urlDataString = //Whatever data was returned from the server as an NSString
NSArray *parameters = [urlDataString componentsSeparatedByString:@"&"];
NSMutableDictionary *parameterDictionary = [NSMutableDictionary dictionary];
for (NSString *parameter in parameters) {
NSArray *parameterComponents = [parameter componentsSeparatedByString:@"="];
[parameterDictionary setObject:[parameterComponents objectAtIndex:1]
forKey:[parameterComponents objectAtIndex:0]];
}
另一方面,NSScanner将为您提供一种更有效的方法,无论哪种方式,您都必须取消从字典中获取的任何值和密钥。
答案 1 :(得分:0)
你可以使用plist的php实现,可以在这里找到
http://code.google.com/p/cfpropertylist/
它允许你创建plist,然后向它添加一个NSDictionary,然后将字符串,数组,数据或更多字典添加到初始字典中。 您可以以xml格式或二进制形式回显plist,二进制文件虽然更好,但它更小,因此数据量更少。 一些谷歌搜索应该提供一些很好的例子,而doco非常好。 希望这会有所帮助。
答案 2 :(得分:0)
尝试使用此函数来解析NSData,我在辅助类中使用它。它使用JSONDecoder for iOS< 5
+ (NSDictionary *) JSONObjectWithData:(NSData *)data {
Class jsonSerializationClass = NSClassFromString(@"NSJSONSerialization");
if (!jsonSerializationClass) {
//iOS < 5 didn't have the JSON serialization class
JSONDecoder *parser = [[JSONDecoder alloc] init];
return [parser objectWithData:data];
}else{
NSError *error = nil;
NSDictionary *dict_response = [[NSMutableDictionary alloc] init];
dict_response = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrinted error:&error];
return dict_response;
}
return nil;
}