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

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

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

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

↑XcodeのShow in Finderで確認可能。ただ、アプリ実行時にはこのファイルを直接使うわけじゃない。
実行時にこのパスを確認すると
/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 バイト
と大きく圧縮されていた。
この圧縮されてるファイルをテキストエディタで覗いてみると

↑こんな感じで元のxmlファイルとなにやら違う。APPLE独自のものになってるんだろうか。
つまり、Xcodeに持って来たファイルはビルド時にバンドルされるわけで、そこでdaeファイルは圧縮される。そうなるとそのファイルを「どーせ、xmlファイルだろ?」と思ってパースしようとしても無理!
ということだと思う。まずいな、、、😖
※1
copyItemAtPath:toPath:error: メソッド実行時に圧縮されてるかもと思ったけど、コピーする前のファイルもxmlとしては読めないし、外部のdaeファイルをコピーしても圧縮しない(パースできる)。やっぱりビルド時に圧縮してるんだろう。
↑これにからんでなんとかdaeファイルのテキストを得ようとしてるんだが、、、
どうやらビルド時にdaeファイルは圧縮されてるようでテキストを得るのが無理っぽい、というか俺にはできそうにない。
順に書いていくと、、、

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

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

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

↑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 バイト
と大きく圧縮されていた。
この圧縮されてるファイルをテキストエディタで覗いてみると

↑こんな感じで元のxmlファイルとなにやら違う。APPLE独自のものになってるんだろうか。
つまり、Xcodeに持って来たファイルはビルド時にバンドルされるわけで、そこでdaeファイルは圧縮される。そうなるとそのファイルを「どーせ、xmlファイルだろ?」と思ってパースしようとしても無理!
ということだと思う。まずいな、、、😖
※1
copyItemAtPath:toPath:error: メソッド実行時に圧縮されてるかもと思ったけど、コピーする前のファイルもxmlとしては読めないし、外部のdaeファイルをコピーしても圧縮しない(パースできる)。やっぱりビルド時に圧縮してるんだろう。
スポンサーサイト
<< 買ってよかったコストコのワゴン TopPage Kerasのコールバック関数内で係数にアクセスする >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1183-666d78f4
https://ringsbell.blog.fc2.com/tb.php/1183-666d78f4