问题
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