1

写真ギャラリーからの画像パスの配列があります。それらの写真を 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];
4

4 に答える 4

1

アセット ライブラリの URL ( で始まるassets-library://) にアクセスしようとすると、NSDataメソッドdataWithContentsOfURL:は失敗して を返しnilます。このメソッドには、アセット URL に関連する画像にアクセスするために必要な権限がありません。アセット ライブラリから読み取るには、 を使用する必要がありALAssetsLibraryます

- (void)assetForURL:(NSURL *)assetURL 
        resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock 
        failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

方法。ご覧のとおり、API は失敗と成功のブロックを引数として受け取ります。ユーザーがデータへのアクセスを許可するように求められる場合があるため、このメソッドは非同期です。

Apple ドキュメントの API の詳細

アセットが要求されると、ユーザーはアプリケーションのライブラリへのアクセスを確認するよう求められる場合があります。ただし、メソッドはすぐに戻ります。resultBlock のアセットに対して、必要な処理を実行する必要があります。ユーザーがアプリケーションへのアクセスを拒否した場合、またはアプリケーションがデータへのアクセスを許可されていない場合、失敗ブロックが呼び出されます。

この API の使用方法については、こちらの回答を参照してください。https://stackoverflow.com/a/13523463/1407017

それが役立つことを願っています!

于 2013-09-04T07:15:33.047 に答える
0
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages]];

NSLog(@"%@",url);

NSData *data = [[NSData alloc]initWithContentsOfURL:url];

UIImage * img=[UIImage imageWithData:data];

ImgView.image=img;

try this one..

于 2013-09-04T06:21:28.423 に答える
0

コードでこの変更を試してください:

NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages[i]]]];

于 2013-09-04T06:26:19.297 に答える