理解できないコードの問題が発生しました。 Xcode 7ベータ版をインストールして、SwiftコードをSwift 2に変換します
コード:
override func viewDidAppear(animated: Bool) {
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = AppDel.managedObjectContext
let request = NSFetchRequest(entityName: "PlayerList")
list = Context.executeFetchRequest(request)
tableView.reloadData()
}
ScreenShot:
Swift 2以降、エラーを生成するCocoaメソッドはSwiftエラーをスローする関数に変換されます。
Swift 1.xのように、オプションの戻り値とエラーパラメータの代わりに:
var error : NSError?
if let result = context.executeFetchRequest(request, error: &error) {
// success ...
list = result
} else {
// failure
println("Fetch failed: \(error!.localizedDescription)")
}
Swift 2では、メソッドは非オプションを返し、エラーの場合はエラーをスローします。これは、try-catchで処理する必要があります。
do {
list = try context.executeFetchRequest(request)
// success ...
} catch let error as NSError {
// failure
print("Fetch failed: \(error.localizedDescription)")
}
詳細については、 "Using Swift with Cocoa and Objective-C" の "Adopting Cocoa Design Patterns" の「Error Handling」を参照してください。 =ドキュメント。
あなたはこのコードを試すことができます:
let result = (try! self.manageContext.executeFetchRequest(FetchRequest)) as! [NSManageObjectClass]
Swift 3.この例ではPlayerListはNSManagedObjectエンティティ/クラス名(Xcodeによって自動作成)
let request: NSFetchRequest<PlayerList> = PlayerList.fetchRequest()
var result:[PlayerList]?
do{
//Succes
result = try context.fetch(request)
}catch let error as NSError {
//Error
print("Error \(error)")
}
print("result: \(result)")
var results = [YourEntity]?
results = try! self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [YourEntity]
以下のコードを試してください
override func viewWillAppear(animated: Bool) {
let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let context = appDel.managedObjectContext
let request = NSFetchRequest(entityName:"Users")
do {
let results = try context.executeFetchRequest(request)
itemList = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}