4月22日更新:
問題の解決: API が機能するには OAUTH が必要であることが判明しました... これにより、JSON バリデーターや独自のアプリなどの他のアプリケーションではなく、ブラウザー (既にサインインしていた) では正しく読み込まれる理由が説明されました。
Lion の Xcode 4.3.2 で JSON ファイルを取得して解析するクラスを作成しようとしています。私はコーディングを始めて数週間しか経っていないので、これが少しばかげた質問だったらごめんなさい! このコードは、JSON ファイルの最初の 20 エントリのみが表示されることを除けば (200 あるはずです)、問題なく動作しているようです。なぜこれが考えられるのでしょうか?
- (void) initJSON
{
NSString *urlstri = [[NSString alloc] initWithFormat:@"http://api.t.sina.com.cn/statuses/followers.json?source=?????&count=200&screen_name=%@", userName];
NSURL *newURL = [[NSURL alloc] initWithString:urlstri];
NSURLRequest *request = [NSURLRequest requestWithURL:newURL];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:NO];
}
];}
- (void) fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
NSArray* newestFollower = [json objectForKey:@"users"]; //2
fnumber = 0;
mnumber = 0;
int arraySize = [newestFollower count];
NSLog(@"%i",arraySize);
for (i=0; i<arraySize; ++i) {
NSDictionary* userProfile = [newestFollower objectAtIndex: i];
NSString* userGender = [userProfile objectForKey:@"gender"];
//NSLog(@"%@", userGender);
if([userGender isEqualToString:@"m"]){
//NSLog (@"man");
++mnumber;
}
if([userGender isEqualToString:@"f"]){
//NSLog(@"notman");
++fnumber;}
}
mOutput = [NSNumber numberWithInt:(mnumber)];
fObj = [NSString stringWithFormat:@"%i", fnumber];
mObj = [NSString stringWithFormat:@"%i", mnumber];
NSLog (@"Boys:%@", mObj);
NSLog (@"Girls:%@", fObj);