2016-11-18 12 views
0

から変換した後、私はちょうどスウィフト3にスウィフト2からプロジェクトを変換して、エラーを取得していますが、コードが問題である理由を私は理解していない:はスウィフト3で[T]を生成する.MAPスウィフト2

var imagesInProject : NSArray? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 
     let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true) 
     print(paths[0]) 

     if let urls = Bundle.main.urls(forResourcesWithExtension: "png", subdirectory: nil) { 
      imagesInProject = urls.filter {$0.lastPathComponent.hasPrefix("AppIcon") == false} .map {$0.lastPathComponent!} 
     } 

     return true 

    } 

エラーは、次のとおりです。「生成 『マップ』 『[T]』、いない期待文脈結果タイプ 『NSArrayの?』」私はこの問題を解決するにはどうすればよい

?私は.mapに精通していますが、エラーを完全に理解していないか、コードが間違っています(現在)

ありがとう!

+1

ドン」 'NSArray'を使用します。実際の型付きスイフト配列を使用します。 – dan

答えて

3

Foundationタイプへの暗黙的なブリッジングはremoved from Swift 3でした。あなたは、変数のためのネイティブ・スウィフトのタイプを使用したほうが良いです:

var imagesInProject : [URL]? 

それとも、/明示的なキャストを追加し、何らかの理由であることを行うにはしたくないことができない場合:

imagesInProject = urls 
        .filter {$0.lastPathComponent.hasPrefix("AppIcon") == false} 
        .map {$0.lastPathComponent} as NSArray 
+1

'!' lastPathComponentから削除されていますが、6文字以下で編集することはできません – user3246092

関連する問題