質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Cocoa

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

4回答

6628閲覧

Swiftで外部の画像ファイルを読み込めない

退会済みユーザー

退会済みユーザー

総合スコア0

Cocoa

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2015/09/07 17:44

編集2015/09/08 04:55

Swiftでローカルに置いてある画像ファイルを読みこみたいと思い、デスクトップ上に画像bug.pngを配置してからXcode、playgroundにて以下のコードを入力しました。

lang

1import Cocoa 2 3var image = NSImage(contentsOfFile: "/Users/user/Desktop/bug.png")

しかし実行結果はnilでした。どの部分が間違っているのでしょうか?
環境はXcode6.4、OSX10.10.5です。

追記:iOSではなく、OSXのアプリを作ることを目的としています。

追記2:情報が足りない気がしたので、もう少し補足します。
まず、playground内のResourcesフォルダからの画像の読み込みは正常にできます。コードで書くと下のようになります。

lang

1import Cocoa 2 3var image_bug = NSImage(named: "bug")

しかし、私がやりたいのは、例えばPages.appでファイル選択ダイアログからテキストファイルを選択して読み込むというような、ディスク内のパスを参照して画像を読み込むことです。
そのためには絶対パスから画像を読み込む実装が必要と考え、APIリファレンスを見てNSImage(contentsOfFile: String)にたどり着いたという次第です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

自己解決しました・・・新規プロジェクトを作って同じコードを書いてみたらあっけなく動作しました。どうやらPlayground内ではnilになるようです。一部のAPIはplaygroundでは機能しないことを頭に入れておいたほうが良さそうです。

投稿2015/09/24 11:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

イメージ説明
Path指定ではなく画像ファイルをPlaygroundプロジェクトのリソース登録を行い利用します。
Show File InspectorでViewを開くと"Resource Path"エリアがありますので矢印アイコンをクリックするとファインダーが開きます。
その中に利用する画像ファイルを入れると利用できます。

投稿2015/09/09 09:05

CharmSystems

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/09/13 05:12

回答ありがとうございます。リソースをプロジェクト内に置かずに、直接パスを指定して画像ファイルを読み込むことはNSImageでは不可能でしょうか?
guest

0

例えばPages.appでファイル選択ダイアログからテキストファイルを選択して読み込むというような、ディスク内のパスを参照して画像を読み込むことです。

OS Xアプリで上記をしたいのであればNSOpenPanelを使うのが良いかと思います。(Playgroundからは使えないかもしれません)

(おそらくセキュリティ上の理由で、)プログラムからローカルのファイルに絶対パスで自由にアクセスすることは許可されてないと思います。

投稿2015/09/13 11:10

jollyjoester

総合スコア1585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/09/24 11:30

ありがとうございます。NSOpenPanelは今後の開発で役に立ちそうです。
guest

0

Xcode で開発中なのですよね?
ということは、iOSシミュレーターで動作確認をされているのではないのですか?

もしそうだとすれば、iOSシミュレーターの実際のデータの場所は、(シミュレーターのバージョンによっても異なるのですが)Macそのもののデスクトップ/Users/user/Desktopとは異なるはすではないでしょうか!?
つまり、/Users/user/Desktop/bug.png に画像ファイルを置いてもシミュレーター上で稼働しているアプリからすると デバイスの外部 になるのでアクセスできません。

ご使用のシミュレーターのバージョンが何なのか分かりませんが、たとえばこちらを参考に、実際のデータの場所へ画像ファイルを配置して確認してみてください。

投稿2015/09/07 19:03

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/09/08 03:50

すみません、書いておくのを忘れていましたが、iOSではなくOSXのアプリを作るのが目的です。なので、playgroundを新規作成する時にもPlatformは「OSX」にしております。 ・・・もしかして、import CocoaとかNSImageの方が間違っているのでしょうか。
pi-chan

2015/09/09 15:38

的確な回答ができず失礼しました。。。CharmSystemsさんのご回答に従えば解決できると思いますので、諦めずに頑張ってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問