私はXcode 6で作業しており、セッション401「Xcode 6の新機能」でデモされたコードを再作成しようとしています。 Images.xcassets(Sampleと呼ばれる)に画像を追加し、プレイグラウンドファイル内でこの画像にアクセスしようとしています(デモされています)。
私のコードは次のとおりです(デモと同様):
var sample = UIImage(named: "Sample")
ただし、デモのように動作させることはできません。何か不足していますか?
これで、標準NSImage(named: "filename_without_extension")で使用できるバンドルが必要になります。
注:Xcodeは.playgroundフォルダーを頻繁に上書きするため、この方法を使用して、resourcesフォルダーが常に削除および再作成されないようにすることをお勧めします。
IOS Developer Library-> Playground Help を見て、「Resource Files」を検索すると、答えが見つかります。
1、.playgroundを開きます
2、[表示]> [ナビゲーター]> [プロジェクトナビゲーターの表示]を選択して、プロジェクトナビゲーターを表示します。
3、画像をリソースにドラッグ
次のように:
これにも問題がありました。
残念ながら、クリスの答えは私にはうまくいきませんでした。 Xcode 6の今後のベータリリースでこの設定が削除された可能性があります。
Xcode 6.0 beta 4(6A267N)の2014年7月21日に利用可能なソリューションを次に示します。これは、以前の「Inside playground」オプションに対応していると思います。これが、Playgroundパッケージ自体の中でResourcesフォルダーが存在する場所です。
これを設定する方法は次のとおりです。
Finderを使用する-または、あなたが私のようなもので、素晴らしい Path Finder を使用する場合-右選択してShow Package Contentsを選択次のとおりです。
パッケージResourcesフォルダーが表示されます:
画像ファイルをそのフォルダにコピーすることでビジネスができます:
let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }
プレイグラウンドで次のコマンドを使用して、resourcePathのパスを見つけることができます。
var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath
私のデフォルトは:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
ただし、デモのように動作させることはできません。何か不足していますか?
名前だけを使用して画像を参照するために画像を配置する必要があるかどうかはわかりませんが、次のように画像へのフルパスを指定することで同じコードが機能します:
var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")
フルパスを使用しなければならないことは、本来よりも複雑に思えますが、機能し、より興味深い問題に進むことができます。
OS Xプレイグラウンドではなく、iOSプレイグラウンドでこのセットアップを取得するのが困難でした。バンドルと相対パスを使用して実行しようとすると、より複雑になります。
画像をすばやく取得したい場合は、絶対ファイルパスを使用することもできます。
IOSの場合:
# iOS
let absoluteImagePath = "/absolute/path/to/image.png"
let image = UIImage(contentsOfFile: absoluteImagePath)
そしてOS X
# OS X
let absoluteImagePath = "/absolute/path/to/image.png"
let image = NSImage(contentsOfFile: absoluteImagePath)
これがXcodeバージョン6.1.1で私にとってうまくいったことです。
メインストーリーボードと同じディレクトリの下にプレイグラウンドファイルを作成します。
Playgroundファイルの[ユーティリティ]ペインを開き、Resource Path
セクションの右矢印をクリックして、そのディレクトリに画像を追加します。
Playgroundファイル内のテストイメージ。
Xcode 6ベータ5(およびおそらくそれ以降)を搭載したiOSプレイグラウンドでは、バンドル内の画像を見ることができます。
どちらかでアクセスする
let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(),
compatibleWithTraitCollection: nil)
または
let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png")
let img = UIImage(contentsOfFile:path)
またはSwift 4:
let path = Bundle.main.path(forResource:"logo", ofType: "png")
let img = NSImage(contentsOfFile:path!)
XCode 6.3.1を使用し、完全なシミュレーターでプレイグラウンドを実行する(iOS)私は次のことをしなければなりませんでした:
次に、let i = UIImage(named: "filename.png")
でインスタンス化します