iOS FBSDKProfilePictureView возвращает пустое изображение


Поэтому я пытаюсь создать простую полосу прокрутки страниц, которые нравятся пользователю, с отображением изображения и имени. Однако вид профиля показывает пустое изображение, а не изображение-заполнитель, что означает, что он получает изображение для отображения. После размещения некоторых точек останова в фактическом коде FBSDKProfilePictureView, в частности в _updateImageWithData:state:, он показывает, что для каждого изображения объект данных составляет всего 97 байт. Самое смешное, когда я так что-то вроде создания автономного вида изображения профиля, как

    FBSDKProfilePictureView *profilePictureView = [[FBSDKProfilePictureView alloc] initWithFrame:CGRectMake(inset, inset, profileSize, profileSize)];
    profilePictureView.profileID = @"4"; //Mark Zuckerberg's id

Он отображает изображение правильно.

Поэтому сначала я подумал, что это может быть связано с установкой слишком большого количества идентификаторов профилей, что создает слишком много запросов url, но если я просто выполню код ниже один раз (т. е. без цикла), он все равно вернет те же 97 байт.

Ниже приведен код, который я использую для создания представления прокрутки.
    for (int i = 0; i < numToIterate; i++) {
        NSDictionary *curr = [sharedInterests objectAtIndex:i];
        NSString *idNumber = [curr objectForKey:@"id"];
        NSString *name = [curr objectForKey:@"name"];
        NSLog(@"getting %@, %@.", name, idNumber);
        // get logo
        FBSDKProfilePictureView *itemView = [[FBSDKProfilePictureView alloc] initWithFrame:CGRectMake(i * (smallFrameWidth + horizontalBufferBetweenPics) + horizontalBufferBetweenPics, 0, smallFrameWidth,smallFrameHeight)];
        [self.scrollView addSubview:itemView];
        [itemView setProfileID:idNumber];
        // create description
        UILabel *currDescriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(i * (smallFrameWidth + horizontalBufferBetweenPics) + horizontalBufferBetweenPics, smallFrameHeight, categoryLabelWidth, categoryLabelHeight)];
        currDescriptionLabel.text = name;
        currDescriptionLabel.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
        currDescriptionLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:12];
        currDescriptionLabel.textAlignment = NSTextAlignmentCenter;
        currDescriptionLabel.numberOfLines = 2;
        [scrollView addSubview:currDescriptionLabel];
    }
1 2

1 ответ:

Я создал модифицированную версию FBProfilePictureView, которая предоставляет отчеты об ошибках. Он позволяет задать обработчик завершения, в котором будут сообщаться об ошибках:

self.facebookPictureView.completionHandler = ^(DBFBProfilePictureView* view, NSError* error){
    if(error) {
        view.showEmptyImage = YES;
        view.profileID = nil;
        NSLog(@"Loading profile picture failed with error: %@", error);
    } 
}