2016-09-15 23 views
4

私はswift 3で自分のコードを変換しました。私のアプリケーションでコアデータを使用しています。 NSFetchRequestが変更されています。 は迅速2では、それは:迅速な3ではNSFetchRequestコアデータスウィフト3下位互換性

let request = NSFetchRequest(entityName: "UnsyncedTask") 

let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest() 

私の質問で、それが唯一のIOS私はそれが後方IOS両立させることができますどのように10をサポートしていますか? 私は迅速3.

答えて

13

NSFetchRequest(entityName:)でIOS 9、IOS 10をサポートしていますNSFetchRequestあなたはiOSの10/MacOSの10.12 以降に新しいAPIを使用するようにif #availableを使用して、古いことができ スウィフト3でまだ使用可能である必要古いOSバージョンのAPI:

let request: NSFetchRequest<UnsyncedTask> 
if #available(iOS 10.0, OSX 10.12, *) { 
    request = UnsyncedTask.fetchRequest() 
} else { 
    request = NSFetchRequest(entityName: "UnsyncedTask") 
} 
do { 
    let results = try context.fetch(request) 
    for task in results { 
     // ... 
    } 
} catch let error { 
    print(error.localizedDescription) 
} 
+0

ありがとう@Martin R – Rox

+0

私のために働いていません。私のiOSデプロイメントターゲットは9.2で、上のコードで 'request = Settings.fetchRequest()'にエラーがあります。 ** NSFetchRequest型にNSFetchRequest型の値を代入できません** NSFetchRequest型にNSFetchRequest型を代入できません** 'The Settings'はxCode 7のモデルから生成されたNSManagedObjectです –

+0

@MarcinKapusta:しかしXcode 8を使用しています?私は新しいXcode 8プロジェクトでそれをテストしました。 –