2011-03-04 106 views
0

我需要通过PHP脚本中的数组将数据从网络接收到的数据转换为数组,以便将值从中提取出来。这是我的代码!将NSData转换为数组的NSURLRequest

-(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脚本是最好的方法吗?谢谢。

回答

2

1)所有代码相关的问题的唯一字符串是

NSArray *payloadAsString = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData]; 

我真怀疑PHP脚本返回您在NSKeyedUnarchiver兼容格式的数据。我相信你没有从这个方法得到NSInvalidArgumentException异常的唯一原因是receivedDatanil(你是否在任何地方初始化它?)。试试你收到这样

[[[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding] autorelease] 

什么,并记录它从做一个字符串。从这个我希望它将清楚如何解析回应。

2)不要命名像'blahBlahString'这样的NSArray实例。字符串和数组完全不同。

+0

你的答案是没有帮助的,也没有解决我的问题。我正在寻找能够解释如何将在PHP脚本中调用的数组转换为可在iPhone程序中使用的数组的人。相反,你所做的只是试图侮辱我的程序员的能力。我将不胜感激,如果你会编辑你的回应,使其有帮助。谢谢。 – user298261 2011-03-04 21:30:08

+0

我不是故意侮辱任何人。尽可能地用我卑微的技巧在第1点中讲述你的问题,如果不够,请对不起。我的建议,如果你真的想得到帮助 - 更新您的文章与PHP代码片段,生成输出在你的应用程序_或_我用字符串谈到的回应。祝你好运。 – hoha 2011-03-04 22:09:20

+0

刚刚了解到PHP数组与iPhone数组的数据类型不同,因此无论如何转换都是不可能的。 :/感谢您的时间。 – user298261 2011-03-04 22:16:41