我正在使用下一个代码来执行获取请求 -
let fetchRequest = NSFetchRequest(entityName: "TimerEntity")
let managedObjectContext = appDel.managedObjectContext
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
do {
let result = try managedObjectContext.executeFetchRequest(fetchRequest)
if result.count > 0 {
print(result)
}
} catch let error as NSError {
print(error.localizedDescription)
}
但是,当我打印它时,我在调试区域中得到了它 -
[{
first = 0;
second = 3657;
third = 0;
fourth = 0;
}, {
first = 0;
second = 0;
third = 0;
fourth = 653;
}]
在我为第四个键设置值之前,我只打印了日志的第一部分。 我究竟做错了什么?我只需要一个 JSON 即可使用它
UPD1...
我认为当我为下一个属性设置Value时 - 它会创建新的json。但为什么?所有这些属性都在同一实体中。
UPD2...
设置值的代码
let managedObjectContext = appDel.managedObjectContext
let entity = NSEntityDescription.entityForName("TimerEntity", inManagedObjectContext: managedObjectContext)
let timerEntity = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
timerEntity.setValue(seconds+(minutes*60)+(hours*3600), forKey: "second")
do {
try managedObjectContext.save()
} catch let error as NSError {
print(error.localizedDescription)
}
最佳答案
在您发布的更新实体属性的代码中,您没有更新现有对象,而是使用 NSManagedObject(entity:insertIntoManagedObjectContext:)
创建一个新对象。
您可能会混淆对象 ID 获取请求的 entityName
,但事实并非如此。它指的是对象类型。如果您想跟踪该类型的单个对象,您可能应该向该对象添加一个标识符属性(例如 timerID
)或使用 NSManagedObject
的 对象ID
。
关于swift - 如何从CoreData获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35699838/