Я пытаюсь получить изображение профиля Facebook, однако у меня возникли проблемы с возможностью проверить, когда изображение было загружено?connectionDidFinishLoading звонки перед загрузкой изображения?
Сначала я создаю переменную.
@property (strong, nonatomic) NSMutableData *imageData;
Чем я запустил соединение.
-(void)getUserPicture {
//Grab user profile picture
imageData = [[NSMutableData alloc] init]; // the image will be loaded in here
NSString *urlString = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", userId];
NSMutableURLRequest *urlRequest =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest
delegate:self];
if (!urlConnection) NSLog(@"Failed to download picture");
}
После того, что я пытаюсь проверить, когда это будет сделано, так что я могу загрузить файл на моем внутреннем интерфейсе, однако моя проблема connectionDidFinishLoading
вызывает почти мгновенно, пока изображение не скачал.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
imageData = [NSMutableData data];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[imageData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
userPicture = [UIImage imageWithData:imageData];
NSLog(@"%@",userPicture); //this returns null :(
}
Странная вещь, если я называю этот метод дважды, NSLog
не возвращает нуль, он фактически возвращает фотографию. Итак, почему connectionDidFinishedLoading
звонок перед загрузкой изображения с Facebook?
поместите свой 'userPicture = [UIImage imageWithData: imageData];' в ваши didReceiveData. –
@SASmith Нет, это очень плохая идея. Если изображение мало, вы, скорее всего, не получили все данные в этот момент. – Rob
@Rob, я не уверен, звонит ли он, прежде чем он скачал все, что я знаю, это мой NSLOG возвращает null, при первом вызове метода, чем если бы я вспомнил метод загрузки изображения? – Josh