2016-08-07 3 views
25

Swiftで簡単なiOSアプリを構築するには、a basic tutorialに従っています。NSURL.URLByAppendingPathComponent()のSwift 3に相当するものは何ですか?

それは、スウィフト2.xの中で書かれた、と私はXCodeの8のベータ版とスウィフト3

チュートリアルでは、データディレクトリを検索しNSFileManagerを使用することを提案して動作しています。クラス名は変更されているので、自動固定スウィフト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

  • 新しいメソッドの名前は何ですかスウィフト3から、それに対処する方法についてどのようなヒントが含まれていませんか?

  • Swift 3の完全なクラスリファレンス(または、URLクラスが定義されているライブラリへのSwift 3インターフェイス - ここではまだ完全にその名称を理解していない)を見つける必要があります。将来自分自身でこれらを研究していますか?

+2

だけ.appendingPathComponent( –

+0

(https://developer.apple.com/reference/foundation/nsurl)[新しい 'NSURL'クラス参照]を見てください - それは今だ' appendingPathComponent(_ :) ' – Hamish

+0

@Hamish arghなので、間違ったクラスリファレンスを見ていた。ありがとう!私はこれを削除することができます(編集:ああ、答えがあります。参照リンクをK.Nimoの答えに) –

答えて

10

あなたがそれをラップする必要があるので、それは今appendingPathComponent(_:)に変更されており、それがスロー - catchブロックを

do { 
    let archiveURL = try documentsDirectory?.appendingPathComponent("meals") 
} catch { 
    print(error) 
} 

更新

のXcodeあたり8ベータ4として、 appendingpathcomponent(_:)エラーをスローしません。関連情報については

は、Xcodeの8のベータ4のとおり@Hamish

39

によって答えを参照してください、それがappendingPathComponent(_:)と命名され、そしてスローされません。 Leo Dabus points out in the commentsとしても

static let archiveURL = documentsDirectory.appendingPathComponent("meals") 

、あなたのdocumentsDirectoryプロパティはベータ4でurls(for:in:)を使用するように変更する必要があります。

static let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 

(私はSwift API design guidelinesにつき、あなたのプロパティ名lowerCamelCaseを、作ったことに注意してくださいI新しいインスタンスを作成するのではなくFileManager.defaultを使用することをお勧めします)。

0123をご覧くださいは=>元のURLへのパスコンポーネントを追加することによって作られた新しいURLを返します

4
func appendingPathComponent(String) 

スウィフト3で行われたAPIの命名の変更を確認します。

func appendingPathComponent(String, isDirectory: Bool) 

=>コンポーネントがディレクトリを指定された場合は、最後のスラッシュと一緒に、元のURLへのパスコンポーネントを追加することによって作られた新しいURLを返します。それがディレクトリである場合

static let archiveURL = documentsDirectory?.appendingPathComponent("meals") 

static let archiveURL = documentsDirectory?.appendingPathComponent("meals", isDirectory: true) 
関連する問題