![](/img/trans.png)
[英]Swift - Core Data & NSCoding : Failed to call designated initializer
[英]Failed loading designated initializer core data
我一直在努力創建一個類來管理Core Data。 我似乎無法通過“無法在NSManaged Object上調用指定的初始化程序”
我怎樣才能解決這個問題?
這是我創建的用於管理數據的類:
import Foundation
import CoreData
import UIKit
class Hours: NSManagedObject {
@NSManaged var date: NSDate
@NSManaged var startTime: NSDate
@NSManaged var endTime: NSDate
@NSManaged var totalTime: Double
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?){
let entity = NSEntityDescription.entityForName("Hours", inManagedObjectContext: context!)
super.init(entity: entity!, insertIntoManagedObjectContext: context)
}
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var context:NSManagedObjectContext {
get{
return appDel.managedObjectContext
}
}
class func insertTimes(date: NSDate, startTime:NSDate, endTime:NSDate,totalTime:Double) -> Hours{
let hour:Hours = Hours()
let newDate:Hours = NSEntityDescription.insertNewObjectForEntityForName("Hours", inManagedObjectContext: hour.context) as! Hours
print("date = \(date), start = \(startTime), end = \(endTime), total = \(totalTime)")
newDate.date = date
newDate.startTime = startTime
newDate.endTime = endTime
newDate.totalTime = totalTime
/*
newDate.setValue(date, forKey: "date")
newDate.setValue(startTime, forKey: "startTime")
newDate.setValue(endTime, forKey:"endTime")
newDate.setValue(totalTime, forKey: "totalTime")
*/
do{
try hour.context.save()
print("Succesfully saved")
}catch{
print("Unresolved save error")
}
return newDate
}
func returnDate(){
//Does not work YET
let request = NSFetchRequest(entityName: "Hours")
//request.returnsObjectsAsFaults = false
do{
let results = try context.executeFetchRequest(request)
print(results)
}catch{
print("Unresolved fetch error")
}
}
}
在按下按鈕后,我嘗試使用以下代碼行調用方法insertTimes
。
@IBAction func saveData(sender: AnyObject) {
let inserted:Hours = Hours.insertTimes(date, startTime: startEndDate.startTime, endTime: startEndDate.endTime, totalTime: timeInterval)
}
請注意,我所有的變量都是正確的類型。
可以在以下位置找到源: https : //github.com/bbriann123/PayDay/blob/master/Hours.swift
看這些:
在AppDelegate
,使用“ Loon Calculator”代替“ DayDataModel”: https : //github.com/bbriann123/PayDay/blob/master/Loon%20Calculator/AppDelegate.swift#L55 (數據模型文件名顯然是“ DayDataModel” : https : //github.com/bbriann123/PayDay/tree/master/Loon%20Calculator/DayDataModel.xcdatamodeld/DayDataModel.xcdatamodel )
在數據模型中,您未將“小時”指定為“小時”實體的自定義類(請在“核心數據”檢查器中查看)
此外,您到達NSManagedObjectContext
的方式也很奇怪: https : //github.com/bbriann123/PayDay/blob/master/Hours.swift#L25-L30
也許您需要一本更好的Core Data書籍(或您正在使用的任何學習方法)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.