1

NSMutableArray *friends, key:birthday を日付順に並べ替えるために NSSortDescriptor を使用しようとしていますが、NSLog のすべての誕生日に対して null を取得していますが、名前はまだログに記録されています。NSSortDescriptor を引き出すと、NSLog は再び値を返します。NSSortDescriptor を介して値を渡すときに値を失う理由と、これをどのように実行できるか疑問に思います。Hackbook のサンプル コードを使用して Facebook の統合を学習し、コードを変更して友達の誕生日を教えてくれました。1 月から 12 月の形式で 1/1 から 12/31 の形式で並べ替えたいと思います。友達リストのresultData?よろしくお願いします。問題が解決し次第、必ず承認してください。

******************************CODE TO PULL KEYS BIRTHDAY AND NAMES FROM GRAPH API ******

   - (void)getUserFriends {
currentAPICall = kAPIGraphUserFriends;
HackbookAppDelegate *delegate = (HackbookAppDelegate *)[[UIApplication sharedApplication]      delegate];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                            @"name, birthday",  @"fields", nil];
[[delegate facebook] requestWithGraphPath:@"me/friends" andParams:params andDelegate:self];
[self apiGraphFriends];
}


  ***********RANDOMIZE LIST OF FRIENDS NAMES W BIRTHDAYS AND PUSH TO VIEW CONTROLLER

NSMutableArray *friends = [[NSMutableArray alloc] initWithCapacity:1];
NSArray *resultData = [result objectForKey:@"data"];
if ([resultData count] > 0) {
    for (NSUInteger i=0; i<[resultData count] && i < 1000; i++) {
        [friends addObject:[resultData objectAtIndex:i]];
    }
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"birthday"
                                                                   ascending:TRUE];
    [friends sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
    [sortDescriptor release];

    // LOG VALUES OF KEYS birthday and name FOR DEBUGGING

    NSLog(@"name %@" , [friends valueForKey:@"name"]);
    NSLog(@"birthday %@" , [friends valueForKey:@"birthday"]);

    // Show the friend information in a new view controller
    NSLog(@"Check#3");
    APIResultsViewController *controller = [[APIResultsViewController alloc]
                                                initWithTitle:@"Friends Birthdays"
                                                         data:friends action:@""];
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
} else {
    [self showMessage:@"You have no friends."];
}
[friends release];

8/10 編集で、これらの名前と誕生日を取得する方法を示す上記のコードを追加しました。両方ともhttp://developers.facebook.com/docs/reference/api/user/ごとに NSStrings であると考えています 。誕生日まで下にスクロールするだけです。部。また、非常に重要なことですが、私は権限を拡張しています。これは権限の問題ではなく、配列をソートしようとすると間違っていることであり、経験不足がここでの私自身の最悪の敵であると信じています。ありがとう!

4

1 に答える 1

1

これは、問題の特定に役立つ場合があります。一般に、これによりカスタムコンパレータを使用してリストを並べ替えることができますが、sortUsingDescriptorsが誕生日をnullにしている理由を特定するのに役立つ場合があります。おそらく、1つ以上の誕生日が無効です。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
                             initWithKey:@"birthday"
                               ascending:YES
                              comparator:^NSComparisonResult(id obj1, id obj2) {
                                  NSLog(@"bday1 = '%@' bday2 = '%@'", obj1, obj2);
                                   return NSOrderedSame;
                              }];
于 2012-08-11T01:12:18.697 に答える