
Cについては、全くの素人です。
「Xcodeプログラミング大全」という書籍を参考に、開発を進めているのですが、行き詰まってしまったので、質問させて下さい。
ImageKitを使ったイメージブラウザを作成して、取り込んだ画像を別名で別の場所に保存するプログラムを作成しています。
前半部は文字数の関係で省略します。
ボタンをクリックして画像を保存します。
- (IBAction)myButton:(id)sender;
{
// imagebrowserに保存した画像を順番に処理
for(int i=0; i< [myImages count]; i++){
NSData *data = nil;
NSString *errorDescription;
//NSPasteboard *pasteboard = [myImages objectAtIndex:i];
if([[[myImages objectAtIndex:i] types] containsObject:NSFilenamesPboardType])
data = [[myImages objectAtIndex:i] dataForType:NSFilenamesPboardType];
if(data){
NSArray *filenames = [NSPropertyListSerialization propertyListFromData:data mutabilityOption:kCFPropertyListImmutable format:nil errorDescription:&errorDescription];
for(int j=0;j< [filenames count];j++){
//NSLog(@"%@",[filenames objectAtIndex:j]);
NSBitmapImageRep* bitmap = [myImages objectAtIndex:i];
// 画像保存
NSData* outdata = [bitmap representationUsingType:NSPNGFileType properties:[NSDictionary dictionary]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);
NSString* path = [NSString stringWithFormat:@"%@/test.png",[paths objectAtIndex:0], nil];
[outdata writeToFile:path atomically:YES];
/
}
}
}
}
@end
エラーは発生しないのですが、コンソールに「[MyImageObject types]: unrecognized selector sent to instance 0xf722590」と表示されます。
また、画像は全く保存されません。
どなたか、ご教授をお願いします。
No.1ベストアンサー
- 回答日時:
こんにちわ
ざっと見た限りで回答してみますが、コンソールに出力されている内容はunrecognized selectorですからインスタンスにセレクタがない、と言っているのだと思います。該当箇所は明示されている通り[MyImageObject types]なので、実装をみると
if([[[myImages objectAtIndex:i] types] containsObject:NSFilenamesPboardType])
のif文中ではないかと思います。ここで[myImages objectAtIndex:i]オブジェクトに対してtypesセレクタの存在を想定しているのは、[myImages objectAtIndex:i]がNSPasteboardクラスのインスタンスであるからだと想像しますが認識は合っていますか?
しっかりコードを読み込んでいないのでわかりにくいのですが、コードの下の方に
NSBitmapImageRep* bitmap = [myImages objectAtIndex:i]
とあり、[myImages objectAtIndex:i]をNSBitmapImageRepとして取得しています。NSBitmapImageRepにtypesセレクタはないと思います。コードの前半と後半で同じオブジェクトに対して2種類の型を想定しているように見えますがいかがでしょうか?
ご指摘ありがとうございました。
[myImages objectAtIndex:i]imageRepresentation]とすることでパスを取得できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba 正規表現について教えてく...
-
pythonでのローカルファイルか...
-
画像生成AIのプロンプトの作り...
-
CSVファイルの複数行削除
-
vba クリップボードクリアにつ...
-
if関数とは?
-
COPYコマンドで、最後に1文字...
-
uwscでPauseキーが押されたら、...
-
自作scratch アニメの商用利用
-
プログラム言語
-
Geminiフォーム 画像生成で 人...
-
pip --versionがエラーになる
-
プログラミングに興味があるの...
-
IT業で開発をされてる方々に質...
-
Pythonのエラーメッセージをコ...
-
Python... 環境設定 初心者です...
-
著作権法について
-
今のプログラミング言語
-
プログラミングについて
-
数学、プログラミング、物理、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトをどこでdisposeす...
-
コンストラクタ内でのthisポインタ
-
C# panel内のコントロールの使...
-
メモリリークが発生するのはど...
-
DataGridViewがクラッシュする
-
関数で値渡しと参照渡しではど...
-
最小化したフォームを元に戻す
-
メモリ解放について、ご教授く...
-
オブジェクト型の変数が定義さ...
-
【VC++6.0(MFC)】「Out of memo...
-
ボタンを押すとラベルの文字を...
-
イベントドリブンとオブジェク...
-
C#でのコンパイル時のエラー
-
デザイナ時のエラー「オブジェ...
-
ソースの書き方について
-
クラス内にWin32APIのコールバ...
-
C#でのUNZIP32.DLLの利用方法が...
-
クラス?オブジェクト?インス...
-
UMLでの「オブジェクト」と「イ...
-
既定のコンストラクタがない?
おすすめ情報