FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


daeファイルはアプリのビルド時に圧縮される?

Blenderで作成したdaeファイルをNSXMLParserでパースしたい

↑これにからんでなんとかdaeファイルのテキストを得ようとしてるんだが、、、
どうやらビルド時にdaeファイルは圧縮されてるようでテキストを得るのが無理っぽい、というか俺にはできそうにない。
順に書いていくと、、、

daeファイル


↑Blenderでdaeファイル(COLLADA)を出力したとする。どこでもいいんだけど、デスクトップにあるとする。

daeファイルをテキストエディタで見る

↑このdaeファイルをテキストエディタで見ると、xmlファイルだ。

Xcodeに持って来たdaeファイル

↑そのファイルをXcodeに持ってくる。参照じゃなくてコピーする。
するとプロジェクトを置いてるところにdaeファイルがコピーされる。

XcodeのShow in Finder

↑XcodeのShow in Finderで確認可能。ただ、アプリ実行時にはこのファイルを直接使うわけじゃない。
{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"frog5" ofType:@"dae"] ;
}
↑macOSアプリ内でこのdaeファイルを使おうとこのようにしてパスを得る。
実行時にこのパスを確認すると
/Users/yama/Library/Developer/Xcode/DerivedData/180807Outline-dmdarosyorbzvzennfoggerorzuk/Build/Products/Debug/180807Outline.app/Contents/Resources/frog5.dae
なんて出てくる。さっきShow in Finderで見たのとは別なところにある。.appのさらに下側にバンドルされるみたいでFinderなんかではもう見えない。

ビルドした時点で多分daeファイルは圧縮されてる。
アプリで上記パスのファイルを copyItemAtPath:toPath:error: でコピーして(※1)そのファイルをFinderで確認すると容量が
627,908バイト→227,491 バイト
と大きく圧縮されていた。
この圧縮されてるファイルをテキストエディタで覗いてみると

圧縮されたdaeファイル

↑こんな感じで元のxmlファイルとなにやら違う。APPLE独自のものになってるんだろうか。

つまり、Xcodeに持って来たファイルはビルド時にバンドルされるわけで、そこでdaeファイルは圧縮される。そうなるとそのファイルを「どーせ、xmlファイルだろ?」と思ってパースしようとしても無理!
ということだと思う。まずいな、、、😖


※1
copyItemAtPath:toPath:error: メソッド実行時に圧縮されてるかもと思ったけど、コピーする前のファイルもxmlとしては読めないし、外部のdaeファイルをコピーしても圧縮しない(パースできる)。やっぱりビルド時に圧縮してるんだろう。

<< 買ってよかったコストコのワゴン  TopPage  Kerasのコールバック関数内で係数にアクセスする >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1183-666d78f4




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad