Iphone NSURLRequest将NSData转换为阵列

Iphone NSURLRequest将NSData转换为阵列,iphone,arrays,authentication,nsdata,nsurl,Iphone,Arrays,Authentication,Nsdata,Nsurl,我需要将通过PHP脚本中的数组从web接收的数据转换为可以从中提取值的数组。这是我的密码 -(void)connectionDidFinishLoading:(NSURLConnection *)connection{ //NSString *payloadAsString = [NSString stringWithUTF8String:[receivedData bytes]]; NSArray *payloadAsString = [NSKeyedUnarchiver un

我需要将通过PHP脚本中的数组从web接收的数据转换为可以从中提取值的数组。这是我的密码

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    //NSString *payloadAsString = [NSString stringWithUTF8String:[receivedData bytes]];
    NSArray *payloadAsString = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];
    [payloadAsString finishEncoding];
    verified = [payloadAsString objectAtIndex:0];
     NSLog(@"logging");
     //NSString *no = [[NSString alloc] init stringWithCString:verified];
    NSLog(@"%@", verified);
    if([verified isEqualToString:@"admin"]){
    NSLog(@"test admin");
            [self performSelector:@selector(changeViewAdmin) withObject:nil afterDelay:0.05];
        }
        if([verified isEqualToString:@"user"]){
        NSLog(@"test user");
            [self performSelector:@selector(changeView) withObject:nil afterDelay:0.05];
        }
        if([verified isEqualToString:@"No"]){
        NSLog(@"test no");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
    message:@"Invalid UserName/Password combination!"
    delegate:self
    cancelButtonTitle:@"Okay"
    otherButtonTitles:nil];
    [alert show];
    [alert release];
        }
    [payloadAsString release];
    //NSLog(@"%@", verified);
    //  INSERT GOOGLE MAPS URL REQUEST HERE
    /*if(requestType == 1){
    NSString* addressText = payloadAsString;
    // URL encode the spaces
    addressText =  [addressText stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];  
    NSString* urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];
    // lets throw this text on the log so we can view the url in the event we have an issue
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];
    // */
    //
    //}
    [connection release];
    self.receivedData = nil;
}
不幸的是,我的控制台返回null并询问我是否已将-finishencoding方法放入。问题是,如果这是正确的,我会在哪里这样做

PS:另一个问题是,如果我从数据库中检索数据数组,PHP脚本是最好的方法吗?谢谢。

1)在所有这些代码中,与您的问题相关的唯一字符串是

NSArray *payloadAsString = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];
我真的怀疑PHP脚本是否会以与NSKeyedUnachiver兼容的格式返回数据。我相信您没有从该方法中获得NSInvalidArgumentException异常的唯一原因是
receivedData
nil
(您在任何地方初始化过它吗?)。试着把你收到的东西做成这样的字符串

[[[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding] autorelease]
并记录下来。从这一点上,我希望可以清楚地看到如何解析响应


2) 不要将NSArray实例命名为“blahBlahString”。字符串和数组完全不同。

NSKeyedArchiver只能生成由NSKeyedArchiver类的实例生成的非归档实例


你的回答没有帮助,也没有解决我的问题。我正在寻找一位能够解释如何将PHP脚本中调用的数组转换为iPhone程序中可用的数组的人。相反,你所做的只是试图侮辱我作为程序员的能力。如果您能修改您的回复以使其有帮助,我将不胜感激。谢谢,我不是有意侮辱任何人。你们所遇到的问题,用我谦逊的技巧,尽可能多地在第1点中提及,若这还不够,请道歉。如果你真的想得到帮助,我的建议是:用PHP代码段更新你的帖子,该代码段在你的应用程序中生成输出,或者用我在回复中提到的字符串。祝你好运。刚刚了解到PHP数组与iPhone数组是不同的数据类型,因此无论如何都不可能进行转换。:/谢谢你抽出时间。