这是我获取数据并重新加载tableView的代码。现在的问题是可以显示新数据,但不能插入数据库。块引号是我的Xcode的输出。
coreData:可选(“huang”)是新数据。
CoreData:sql:SELECT 0,t0.Z_PK,t0.Z_OPT,t0.ZINCONSISTENCIES,t0.ZMISSINGHIPERS,t0.ZNAME,t0.ZPES,t0.ZSCORE,t0.ZUPDATEDTIME FROM ZREPORT t0 ORDER BY t0.ZNAME < / p>
CoreData:annotation:sql connection fetch time:0.0008s
CoreData:注释:总获取执行时间:2行0.0010秒。
coreData:可选(“huang”)
coreData:可选(“test1”)
coreData:可选(“test2”)
override func viewDidLoad() {
super.viewDidLoad()
print("pwd: \(NSHomeDirectory())")
let addMoreButton = UIBarButtonItem(image: UIImage.init(named:"navbar_icon_create_default"), style: .done, target: self, action: #selector(createNewReport))
self.navigationItem.rightBarButtonItem = addMoreButton
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Report")
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
if let managedObjectContext = (UIApplication.shared.delegate as?
AppDelegate)?.managedObjectContext {
fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
fetchResultController.delegate = self
do {
try fetchResultController.performFetch()
reports = fetchResultController.fetchedObjects as! [Report]
reports.forEach{ entity in
print("coreData : \(entity.name)")
}
} catch {
print(error)
}
}
}
我正在向coredata添加新数据。这是我的测试代码
var reports:[Report] = []
let context = (UIApplication.shared.delegate as? AppDelegate)?.managedObjectContext
let report = NSEntityDescription.entity(forEntityName: "Report", in: context!)
let reportDetail = NSManagedObject(entity: report!, insertInto: context) as! Report
reportDetail.inconsistencies = 3
reportDetail.pes = 4
reportDetail.missingHIPERs = 6
reportDetail.name = "huang"
reportDetail.updatedTime = nil
reportDetail.score = "60"
print("pppp: \(reportDetail.missingHIPERs)")
reports.append(reportDetail)
self.cacheManager.store(reports: reports)
这是我的商店功能代码
func store(reports: [Report]) {
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "Report", in: context)
reports.forEach { report in
let reportDetail = NSManagedObject(entity: entity!, insertInto: context) as! Report
reportDetail.name = report.name
reportDetail.inconsistencies = report.inconsistencies
reportDetail.missingHIPERs = report.missingHIPERs
reportDetail.score = report.score
reportDetail.pes = report.pes
}
do {
try context.save()
print("saved")
}catch{
print("Could not save the report detail as: \(error)")
}
}
正如下面的两张图片所示,保存数据的过程似乎有效(打印功能正常)。我的应用程序可以在添加数据后刷新tableView。 另外两个数据是我自己使用sqlite工具手动添加的,它们总能显示。但新数据从未添加到数据库中。我在控制台中打开了sqlite输出。
那么,问题是什么?