私は 基本的なチュートリアル に従って、Swiftで簡単なiOSアプリを作成しています。
これはSwift 2.xで書かれており、XCode 8ベータ版とSwift 3。
チュートリアルでは、NSFileManager
を使用してデータディレクトリを見つけることをお勧めします。クラス名が変更されたため、自動修正されたSwift 3は次のようになります。
static let DocumentsDirectory = FileManager().urlsForDirectory(.documentDirectory, inDomains:.userDomainMask).first!
static let ArchiveURL = DocumentsDirectory.URLByAppendingPathComponent("meals")
ただし、Xcodeは現在、
Value of type 'URL' has no member 'URLByAddingPathComponent'
メソッドが今何と呼ばれているのかわかりません。
NSURL Class Reference には、Swift 3からアドレスする方法に関するヒントが含まれていません。
新しいメソッド名は何ですか?
Swift 3(または、ライブラリへのSwift 3インターフェイスURL
クラスはで定義されています-私はまだ命名法を完全に理解していません)ので、将来これらを自分で研究できますか?
Xcode 8ベータ4の時点では、名前は appendingPathComponent(_:)
であり、スローされません。
_static let archiveURL = documentsDirectory.appendingPathComponent("meals")
_
また、 Leo Dabusがコメントで指摘している のように、documentsDirectory
プロパティは、ベータ4で urls(for:in:)
を使用するように変更する必要があります。
_static let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
_
( Swift API設計ガイドライン に従って、プロパティ名をlowerCamelCase
にしたことに注意してください。新しいインスタンスを作成するのではなく、_FileManager.default
_を使用することもお勧めします。 )
Appleの最新のAPIリファレンスガイド をご覧になり、Swift 3。
これはappendingPathComponent(_:)
に変更され、スローされるため、do-catchブロックでラップする必要があります。
_do {
let archiveURL = try documentsDirectory?.appendingPathComponent("meals")
} catch {
print(error)
}
_
更新
Xcode 8ベータ4によると、 appendingpathcomponent(_:)
はエラーをスローしません。
関連情報については、 @ Hamish による回答をご覧ください
func appendingPathComponent(String)
=>元のURLにパスコンポーネントを追加して作成された新しいURLを返します。
static let archiveURL = documentsDirectory?.appendingPathComponent("meals")
ディレクトリの場合:
func appendingPathComponent(String, isDirectory: Bool)
=>元のURLにパスコンポーネントを追加して作成された新しいURLを返します。コンポーネントがディレクトリに指定されている場合は、末尾にスラッシュが付きます。
static let archiveURL = documentsDirectory?.appendingPathComponent("meals", isDirectory: true)