0

次のコードがあります

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

私が抱えている問題は、NSLog(@"Files: %@", files); 私が期待するものを返します

Files: (
    {
    UserNumber = 1;
}
)

ただしNSLog(@"output: %@", userNumber); NULL を返します

NSString *userNumber = [result objectForKey:@"UserNumber"]; の理由を理解するのに助けが必要です。本来の「1」を返していないようです。

4

1 に答える 1

2

コードを次のように変更します。

for (NSDictionary *file in files)
{           
NSString *userNumber = [file objectForKey:@"UserNumber"];
NSLog(@"output: %@", userNumber);
}

つまりfile objectForKey...、ではありませんresult objectForKey...。forループ内のコードの目的でfiles識別されている配列内の各エントリを使用して、配列を反復処理しています。file

于 2012-02-24T01:23:58.417 に答える