• ベストアンサー

cocoa resources内のファイルを取得

教えて頂けますか? アプリケーション.app/Contents/Resources/内にあるファイルの取得に、 object = [[NSDictionary dictionaryWithContentsOfFile:[[[NSBundle mainBundle]bundlePath]stringByAppendingPathComponent:@"Contents/Resources/hoge.plist"]]retain]; の様にしています。 もっとスマート?カンタンに取得できる方法がありますか? よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • capy2009
  • ベストアンサー率72% (337/465)
回答No.1

resourcePath を使えば、少し簡単になります。

psychesine
質問者

お礼

ありがとうございます!ばっちりです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

NSBundle Class Reference http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html 「pathForResource:ofType:」を使うのが、よろしいかと。 例文が載っているので、詳しくはそれを読んでみてください。

psychesine
質問者

お礼

ありがとうございます!勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • cocoa で ユーザーディレクトリの Application Support ディレクトリ までのパス取得

    cocoa で ユーザーディレクトリの Application Support ディレクトリ までのパス取得を簡単に行うにはどうすれば良いでしょうか? [[NSBundle mainBundle]bundlePath] で取得したパスを加工する方法しか思いつきません。 他にあれば教えていただけますか? よろしくおねがいします

  • objective-Cについてご相談があります。

    現在objective-cを勉強中なのですが、 jsonについて教えて頂きたい事があります。 jsonのファイル・データ・オブジェクトそれぞれを 取得する必要があると習ったのですが、それらの違いが 今ひとつ分かりません。 下記のような記述なのですが、それぞれの違いをどなたか ご教示頂けないでしょうか。 // 対象Jsonファイル取得 NSBundle *bnd = [NSBundle mainBundle]; NSString *ptn = [bnd pathForResource:@"Test01" ofType:@"json"]; NSURL *url = [NSURL fileURLWithPath:ptn]; // Jsonオブジェクトの取得 NSURLRequest *req =[NSURLRequest requestWithURL:url]; NSData *dat = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil]; // Jsonデータの取得 NSDictionary *dick01 = (NSDictionary *) [NSJSONSerialization JSONObjectWithData:dat options:NSJSONReadingMutableContainers error:nil]; 以上、何卒宜しくお願い致します。

  • Objecive-C

    NSDictionary *row1 = [[NSDictionary alloc]initWithObjectsAndKeys:            @"MacBook",@"Name",@"White",@"Color",nil]; NSDictionary *row2 = [[NSDictionary alloc]initWithObjectsAndKeys:        @"MacPro",@"Name",@"Silver",@"Color",nil]; NSArray *array● = [[NSArray alloc]initWithObjects:row1,row2,nil]; これをplistを使って実現させようと思ったのですが、 NSString *path =[[NSBundle mainBundle]pathForResource:@"Celldata" ofType:@"plist"]; NSArray *array○ = [[NSArray alloc]initWithContentsOfFile:path]; *array●と*array○は同様の配列で実現可能ですか? plistに問題があるのでしょうか?。 plistは、下記です。 key Type Value Root Dictionary row1 Dictionary ( 2 items) Name String MacBooc Color String White

  • テーブルビューで配列が自動消滅することについて

    xcode4.1をつかってiphoneアプリを作成しています。 テーブルビューの画面遷移時に、 可変配列NSMutableArrayに plistを読み込ませたNSMutableDictionaryの一意のキーの中身を保存し、 更に選択した行番号で呼び出した配列の中身を別ビューに渡そうとすると失敗してしまいます。 ・・自動解放されてしまっていると思うのですが、 [[[NSMutableArray alloc] init] retain]; としてもうまくいきませんでした。 どうすればうまくデータを別ビューに渡せるでしょうか。 (plistの読み込みは必須です。。) すみませんがご教授いただけますでしょうか。。。 よろしくお願いいたします。 //-------- .h------ @interface DtlVCL : UITableViewController { //別のViewからデータ受け渡し用 NSString *rcvStr; //plist一時読み込み用 NSMutableDictionary *dic; NSMutableArray *ary; } .m------------ viewDidLoad------ //各変数初期化 ary = [[[NSMutableArray alloc] init] retain]; dic = [[[NSMutableDictionary alloc] init] retain]; id path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"xxxxxxxx.plist"]; if([[NSFileManager defaultManager] fileExistsAtPath:path] == YES){ dic = [NSMutableDictionary dictionaryWithContentsOfFile:path]; }else{ NSLog(@"Dtl :ファイル読み込みエラー"); } ary = [dic objectForKey:rcvStr];//rcvStrは前ビューから取得した文字列 ------------------- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath------ ExpVCL *expvcl = [[ExpVCL alloc] initWithNibName:@"ExpVCL" bundle:nil]; //データの受け渡し expvcl.rcvNum = [indexPath row]; expvcl.rcvStr = [NSString stringWithFormat:@"%@",[ary objectAtIndex:[indexPath row]]]; [self.navigationController pushViewController:expvcl animated:YES]; [expvcl release];

  • 【VBAでapp.path が取得できない】

    VBAでapp.path を取得しようとすると、「オブジェクトが必要です」エラーが表示されます。 アプリケーション実行パスを取得する方法はありますか? Excel2000を使用しています。 宜しくお願いいたします。

  • Excel 埋め込みオブジェクトのファイル名取得

    Excelファイルに挿入>オブジェクト>ファイルから ・・・ で選択し、埋め込んだオブジェクトのファイル名をVBAで 取得する事はできますか? 実際には上記のように手動ではなく、 Application.Dialogs(xlDialogInsertObject).Show , " ", , True でダイアログを表示し、ファイルを選択させています。 埋め込んだファイルがフォルダ階層が深かったりすると、 ファイル名まで表示されないので、ファイル名を取得して、 別のセルに入力するまでをVBAで処理をしたいと考えています。 既に埋め込まれているオブジェクトの名前を取得する、もしくは ダイアログで選択されたファイルの名前を取得する、ということが できるのであれば教えていただけますでしょうか?

  • ファイルが既に開いているかどうかを取得するには

    Sub Sample1() Dim App As Object Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = "C:\Users\test.xlsm" With App .Workbooks.Open Filename:=MyFileName .Visible = True If .ReadOnly Then MsgBox "既に開いています" App.Quit '既に開いているのなら、閉じる End If End With End Sub このようなコードを作ったのですが、どうやらIf .ReadOnly Thenの部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。

  • array_searchを使って外部ファイルから目的のキーを取得したい

    array_searchを使って外部ファイルから目的のキーを取得したいのですが どうしてもFALSEを返されてしまいます。 以下が構文です。 <?php $file = file_get_contents("arr.php"); $arr =explode("\n",$file); $delstr="DEF"; $hoge = in_array($delstr,$arr,1); if($hoge !== false){ array_splice($arr,$hoge,1); } var_dump($hoge); print_r($arr); ?> 3日くらい悩んでいます。 どうかご教授よろしくお願い致します。

    • 締切済み
    • PHP
  • macでappを起動するとこうなります

    A JavaScript error occurred in the main process Uncaught Exception: Error: Failed to get 'documents' path at Module.<anonymous> (/Applications/NoteBurner YouTube Video Downloader.app/Contents/Resources/app.asar/dist/electron/main.js:18:78119) at t (/Applications/NoteBurner YouTube Video Downloader.app/Contents/Resources/app.asar/dist/electron/main.js:1:270) at /Applications/NoteBurner YouTube Video Downloader.app/Contents/Resources/app.asar/dist/electron/main.js:1:1078 at Object.<anonymous> (/Applications/NoteBurner YouTube Video Downloader.app/Contents/Resources/app.asar/dist/electron/main.js:1:1088) at Object.<anonymous> (/Applications/NoteBurner YouTube Video Downloader.app/Contents/Resources/app.asar/dist/electron/main.js:19:3) at Module._compile (internal/modules/cjs/loader.js:693:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10) at Module.load (internal/modules/cjs/loader.js:602:32) at tryModuleLoad (internal/modules/cjs/loader.js:541:12) at Function.Module._load (internal/modules/cjs/loader.js:533:3)

    • 締切済み
    • Mac
  • vb2022 Resourcesの中のエクセルの扱

    vb2022 Resourcesの中のエクセルの扱い方を教えて下さい サンプルに貰ったvb(フォームアプリケーション)のソースには Resourcesの中にエクセルファイル(エクセル1.xlsx)があります。 そのエクセルをプログラム内でコピーして、一部のセルの値を書き換えて出力しています。 Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) 同じことをしたいのですが、Resourcesのエクセルの扱い方がわかりません。 まず、あらかじめ用意した『エクセル1.xlsx』をResourcesの中に置く方法がわかりません。 エクスプローラを開き 場所、プロジェクト名のフォルダResourcesフォルダとたどり、Resourcesフォルダの中に『エクセル1.xlsx』を置きました。 置いただけではVBのエディタ(ソリューションエクスプローラ)からは見えません。 ソリューションエクスプローラのResourcesで右クリックし、追加、既存の項目、で、今置いた場所(Resourcesフォルダの中の『エクセル1.xlsx』)を選ぶと ソリューションエクスプローラのResourcesの下に姿を現しました。 ここまでのやり方があってるのか分かりません。 次に コードを書くところ(ボタン押下とか)で Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) を書くと My.Resources.エクセル1 の部分がエラーになります。 サンプルに貰ったvbでは、 『My.Resources.』まで手で打つと候補に『エクセル1』などが挙がってきますが 一から作った分は候補が出てきませんし、エラーになります。 どこかで、 (略)\Resources\エクセル1.xlsx と My.Resources.エクセル1 の紐づけが必要なのだと思いますが、どこで何をすればいいのか分かりません。