问题
I have the following code
hostStr = [hostStr stringByAppendingString:post];
NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
NSError *error = nil;
NSDictionary *result = [NSJSONSerialization
JSONObjectWithData:dataURL
options:kNilOptions
error:&error];
NSArray *files = [result objectForKey:@"GV_Return"];
NSLog(@"Files: %@", files);
// For Each Key we seperate the data and add it to an object to be used.
for (NSDictionary *file in files)
{
NSString *userNumber = [result objectForKey:@"UserNumber"];
NSLog(@"output: %@", userNumber);
}
The problem I'm having is that NSLog(@"Files: %@", files); returns what I expect
Files: (
{
UserNumber = 1;
}
)
However NSLog(@"output: %@", userNumber); Returns NULL
I need help figuring out why NSString *userNumber = [result objectForKey:@"UserNumber"]; does not seem to be returning "1" as it should.
回答1:
Change your code to:
for (NSDictionary *file in files)
{
NSString *userNumber = [file objectForKey:@"UserNumber"];
NSLog(@"output: %@", userNumber);
}
i.e. file objectForKey..., not result objectForKey.... You're iterating through the files array with each entry in it being identified as file for the purposes of the code within the for loop.
来源:https://stackoverflow.com/questions/9424040/ios-nsjson-returning-null