NS…自分の中身を読みたかった。 [Macでゲームをつくろう!]
もっとスマートな方法があるのかもしれないけれど、
アプリケーションとして作ったAPPファイルの中身を参照するにはどうしたらいいかと悩んでましたが
ようやく、解決しました。<おそいなぁ。
以前にも書いた事があるのですが、Macのアプリケーション(OS X以降)では、実行ファイルであり
フォルダもであるという不思議な構造になっているのです。
確かめるには、実行ファイルの拡張子である”.app”を外してみてください。あら不思議、あっという
間にフォルダに変化して中身が見えるようになりますよね。(右クリックで『パッケージの中身を見る』
でも、見る事が出来ます。
条件を満たしてあれば、フォルダがappの拡張子を付けるだけでアプリケーションになるんですね。
(まぁ、その条件が普通は難しいのですが)
ということで、アプリケーションであり、フォルダでもある.appファイルの中に入れた書類を読み出す
ようには出来ないかと考えてみました。
結構簡単でした、(涙)
tell application "Finder"
set add1 to ((path to me) as text) & "Contents:Resources:"
end tell
set add1 to add1 & "test.txt"
try
set fileNo to open for access file add1
set answ to read fileNo -- using delimiter {","} as text
end try
close access fileNo
set contents of text field "textField1" of window "main" to answ
open ー access を使うのは解っていたのですが、なかなかうまく使えなかったのがありますが
どこにアクセスしたらいいのかも悩みでした。
アプリケーションが今どこにおいてあるのか不確定なものですから、それを調べてやらなければいけません。
それが、(path to me) です。
これで、どこにおいてあろうと.appのある場所を割り出せます。
後はフォルダの中のリソースフォルダを指定してやれば良いのですね。
一度テキストにしているのは、コレが一番エラーにならなかったからですが、次の難題はエイリアスの扱い
かなぁ。それはまたいつか…。
そしてopen for accessの時になって初めてfileのアドレスに切り替えれば使えますね。
では実際に使ってみましょう。
デスクトップにも読みにいきたいファイルの元がありますが、これはXcodeに読み込ませる多ものものです。
ビルドをするとちゃんと、リソースの中にコピーされています。でも、デスクトップのやつを消すと、次回
のビルドからファイルが無いぞ!と怒られるのでこのまま・・・。
本当は、どこかに集めておくのがいいんですよね。
書類の中身はテキトウですが、ちゃんと読み込まれているのが解ります。
上のスクリプトの中に、
-- using delimiter {","} as text
と、コメントアウトしている部分がありますが、これは読んだ書類を切り分ける指示が出来るスクリプトなのですが
日本語ではうまくいかないので使いません。
半角英数字のみの書類でやりたいという人がいれば使えますので参考までに。
アプリケーションとして作ったAPPファイルの中身を参照するにはどうしたらいいかと悩んでましたが
ようやく、解決しました。<おそいなぁ。
以前にも書いた事があるのですが、Macのアプリケーション(OS X以降)では、実行ファイルであり
フォルダもであるという不思議な構造になっているのです。
確かめるには、実行ファイルの拡張子である”.app”を外してみてください。あら不思議、あっという
間にフォルダに変化して中身が見えるようになりますよね。(右クリックで『パッケージの中身を見る』
でも、見る事が出来ます。
条件を満たしてあれば、フォルダがappの拡張子を付けるだけでアプリケーションになるんですね。
(まぁ、その条件が普通は難しいのですが)
ということで、アプリケーションであり、フォルダでもある.appファイルの中に入れた書類を読み出す
ようには出来ないかと考えてみました。
結構簡単でした、(涙)
tell application "Finder"
set add1 to ((path to me) as text) & "Contents:Resources:"
end tell
set add1 to add1 & "test.txt"
try
set fileNo to open for access file add1
set answ to read fileNo -- using delimiter {","} as text
end try
close access fileNo
set contents of text field "textField1" of window "main" to answ
open ー access を使うのは解っていたのですが、なかなかうまく使えなかったのがありますが
どこにアクセスしたらいいのかも悩みでした。
アプリケーションが今どこにおいてあるのか不確定なものですから、それを調べてやらなければいけません。
それが、(path to me) です。
これで、どこにおいてあろうと.appのある場所を割り出せます。
後はフォルダの中のリソースフォルダを指定してやれば良いのですね。
一度テキストにしているのは、コレが一番エラーにならなかったからですが、次の難題はエイリアスの扱い
かなぁ。それはまたいつか…。
そしてopen for accessの時になって初めてfileのアドレスに切り替えれば使えますね。
では実際に使ってみましょう。
デスクトップにも読みにいきたいファイルの元がありますが、これはXcodeに読み込ませる多ものものです。
ビルドをするとちゃんと、リソースの中にコピーされています。でも、デスクトップのやつを消すと、次回
のビルドからファイルが無いぞ!と怒られるのでこのまま・・・。
本当は、どこかに集めておくのがいいんですよね。
書類の中身はテキトウですが、ちゃんと読み込まれているのが解ります。
上のスクリプトの中に、
-- using delimiter {","} as text
と、コメントアウトしている部分がありますが、これは読んだ書類を切り分ける指示が出来るスクリプトなのですが
日本語ではうまくいかないので使いません。
半角英数字のみの書類でやりたいという人がいれば使えますので参考までに。
コメント 0