我有一组来自照片库的图像路径。我需要通过我的Facebook应用程序发布这些照片。但我收到错误324,“需要上传文件”。我认为我从路径获取NSData的方式是错误的。有什么帮助吗?
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString: URLImages[i]]];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
messageTextView.text, @"message", imageData, @"source", nil];
但是当我在项目中硬编码图像时,它正在工作
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"IMAG0386" ofType:@"jpg"];
NSData *imageData = [NSData dataWithContentsOfFile:filePath];
mosaicShareImages[i]]];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
messageTextView.text, @"message", imageData, @"source", nil];
答案 0 :(得分:1)
如果您尝试访问资产库网址(以assets-library://
开头),NSData
方法dataWithContentsOfURL:
将失败并返回nil
。此方法没有访问与资产URL相关的图像所需的权限。要从资产库中读取,您需要使用ALAssetsLibrary
的
- (void)assetForURL:(NSURL *)assetURL
resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock
failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock
方法。正如您所看到的,API将失败和成功的块作为参数。此方法是异步的,因为可能需要要求用户授予对数据的访问权。
有关API from Apple docs
的更多信息当请求资产时,可能会要求用户确认应用程序对库的访问权限;但是,该方法立即返回。您应该在resultBlock中对资产执行所需的任何工作。 如果用户拒绝访问应用程序,或者如果不允许应用程序访问数据,则会调用失败块。
如何使用此API可在此答案中找到。 https://stackoverflow.com/a/13523463/1407017
希望有所帮助!
答案 1 :(得分:0)
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages]];
NSLog(@"%@",url);
NSData *data = [[NSData alloc]initWithContentsOfURL:url];
UIImage * img=[UIImage imageWithData:data];
ImgView.image=img;
尝试这个..
答案 2 :(得分:0)
在代码中尝试此更改:
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages[i]]]]
;
答案 3 :(得分:0)
如果您的数组URLImages [i]包含图像文件的绝对路径,那么您需要使用[NSURL fileURLWithPath:]
,如下所示:
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath: URLImages[i]]];