1
コアデータサブクラスの拡張を作成しました。ここにテーブルを事前に設定するメソッドを実装しました。まずテーブル内に何かがあるかどうかを確認します。キャッチされない例外により「NSInvalidArgumentException」にアプリを終了事前にコアデータにメソッドを設定する
を、理由:'executeFetchRequest:error: <null> is not a valid NSFetchRequest.'
import Foundation
import CoreData
extension SimulationParams {
public static func feedSimulationParams(context: NSManagedObjectContext) {
let fetchRequest : NSFetchRequest<NSFetchRequestResult>
if #available(iOS 10.0, *) {
fetchRequest = SimulationParams.fetchRequest()
} else {
fetchRequest = NSFetchRequest(entityName: "SimulationParams")
}
let idDescriptor: NSSortDescriptor = NSSortDescriptor(key: "id", ascending: false)
fetchRequest.sortDescriptors = [idDescriptor]
fetchRequest.fetchLimit = 1
var newId = 0;
do {
let results = try context.fetch(fetchRequest)
if(results.count == 0){
self.setValue(getId(fetchRequest: fetchRequest, context: context), forKeyPath: "id")
self.setValue(1.5, forKeyPath: "bankFeePercentage")
self.setValue(1, forKeyPath: "consoMaxMonthly")
self.setValue(12, forKeyPath: "consoMinMonthly")
self.setValue(3.5, forKeyPath: "consoRatePercentage")
self.setValue(4, forKeyPath: "fileFeePercentage")
self.setValue(1, forKeyPath: "immoMaxMonthly")
self.setValue(25, forKeyPath: "immoMinMonthly")
self.setValue(2.05, forKeyPath: "immoRatePercentage")
self.setValue(3, forKeyPath: "prepaymentPenaltyPercentage")
self.setValue(1, forKeyPath: "notaryGridId")
do {
try context.save()
} catch let error as NSError {
print ("Error first demande insertion \(error)")
}
}
} catch {
let fetchError = error as NSError
print(fetchError)
}
}
}
は関係ありませんが、なぜない 'self.bankFeePercentage = 1.5':
あなたはあなたのコードでこれを行う必要がありますか?あなたは '... forKeyPath'が実際に何のためにあるのか知っていますか? – vadian
@vadian自己の属性にアクセスすることはできません。 forKeyPath、それはデータベースに関するものです – Ben