我正在使用下一个代码来执行获取请求 -
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
我认为当我为下一个属性设置setValue时,它会创建新的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)
}
答案 0 :(得分:0)
在您发布的更新实体属性的代码中,您没有更新现有对象,而是使用NSManagedObject(entity:insertIntoManagedObjectContext:)
创建新对象。
您可能会将entityName
混淆为对象ID的获取请求,而不是。它指的是对象类型。如果要跟踪该类型的单个对象,您应该向对象添加标识符属性(类似timerID
)或使用NSManagedObject
的{{1}}。