开发者

NSURLRequest converting NSData to an array

开发者 https://www.devze.com 2023-02-15 02:08 出处:网络
I need to convert data received from the web via an array in a PHP script into an array that I can pull values out of. Here\'s my code!

I need to convert data received from the web via an array in a PHP script into an array that I can pull values out of. Here's my code!

-(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;
}

Unfortunately, my console returns null and asks if I've put the -finishencoding method in. Question is, if that's correct, where would I do so?

PS: Another question, is if I'm retrieving an array of data from a database, is a PHP script the best way to go? Thank you.


1) Of all this code the only string relevant to your question is

NSArray *payloadAsString = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];

I really doubt that PHP script returns you data in NSKeyedUnarchiver-compatible format. I believe the only reason you don't get NSInvalidArgumentException exception from this method is that receivedData is nil (did you initialize it anywhere?). Try to make a string from what you receive like this

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

and log it. From this I hope it will be clear how to parse response.

2) Do not name NSArray instances like 'blahBlahString'. Strings and arrays are completely different.


NSKeyedUnarchiver can only unarchive instances which are produced by instances of the NSKeyedArchiver class.

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSKeyedUnarchiver_Class/index.html

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号