我不知道为什么,但是我的一些数据为零和零值。
我的实体由1个NSDate和5个Float属性组成。
我有四个滑块来设置其中四个的值,一个用于计算(其他四个用于算术平均值),NSDate仅存储当前日期和时间。
var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var context:NSManagedObjectContext = appDel.managedObjectContext!
var newHowDoYouFeel = NSEntityDescription.insertNewObjectForEntityForName("HowDoYouFeel", inManagedObjectContext: context) as! NSManagedObject
// var howDoYouFeels = [HowDoYouFeel]()
var totalAfter = (slider1!.value + slider2!.value + slider3!.value + slider4!.value)/4
newHowDoYouFeel.setValue(totalBefore, forKey: "totalBefore")
newHowDoYouFeel.setValue(focusBefore, forKey: "focusBefore")
newHowDoYouFeel.setValue(moodBefore, forKey: "moodBefore")
newHowDoYouFeel.setValue(relaxBefore, forKey: "relaxBefore")
newHowDoYouFeel.setValue(energyBefore, forKey: "energyBefore")
newHowDoYouFeel.setValue(NSDate(), forKey: "date")
newHowDoYouFeel.setValue(totalAfter, forKey: "totalAfter")
newHowDoYouFeel.setValue(slider1!.value, forKey: "focusAfter")
newHowDoYouFeel.setValue(slider2!.value, forKey: "moodAfter")
newHowDoYouFeel.setValue(slider3!.value, forKey: "relaxAfter")
newHowDoYouFeel.setValue(slider4!.value, forKey: "energyAfter")
newHowDoYouFeel.setValue(NSDate(), forKey: "date")
context.save(nil)
这是获取数据的代码:
var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var context:NSManagedObjectContext = appDel.managedObjectContext!
var newHowDoYouFeel = NSEntityDescription.insertNewObjectForEntityForName("HowDoYouFeel", inManagedObjectContext: context) as! NSManagedObject
var howDoYouFeels = [HowDoYouFeel]()
var fetchRequest = NSFetchRequest(entityName: "HowDoYouFeel")
fetchRequest.returnsObjectsAsFaults = false
var error : NSError?
if let howDoYouFeels = context.executeFetchRequest(fetchRequest, error: &error) as? [HowDoYouFeel]{
println("count is: \(howDoYouFeels.count)")
if howDoYouFeels.count > 0 {
for howDoYouFeel in howDoYouFeels {
println(howDoYouFeel)
}
}
}
}
else {
println("empty")
}
}
else {
println("Fetch failed: \(error)")
}
NSManaged类如下所示:
import Foundation
import CoreData
class HowDoYouFeel:NSManagedObject {
@NSManaged var totalBefore: Float
@NSManaged var totalAfter: Float
@NSManaged var focusBefore: Float
@NSManaged var focusAfter: Float
@NSManaged var moodBefore: Float
@NSManaged var moodAfter: Float
@NSManaged var relaxBefore: Float
@NSManaged var relaxAfter: Float
@NSManaged var energyBefore: Float
@NSManaged var energyAfter: Float
@NSManaged var date: NSDate
}
但是,当我尝试打印它时,一些数据如下所示:
<Scroll_tab.HowDoYouFeel: 0x7fe4624380c0> (entity: HowDoYouFeel; id: 0x7fe462428430 <x-coredata:///HowDoYouFeel/t289EB596-9019-441F-86F0-7225F85A46B23> ; data: {
date = nil;
energyAfter = 0;
energyBefore = 0;
focusAfter = 0;
focusBefore = 0;
moodAfter = 0;
moodBefore = 0;
relaxAfter = 0;
relaxBefore = 0;
totalAfter = 0;
totalBefore = 0;
某些数据可以具有所有正确的值。
我究竟做错了什么?
最佳答案
好吧,您所有的原语都是0,因为这是设置之前的默认值。日期是一个对象,而不是原始对象,这就是为什么它是nil而不是0(Nil表示缺少对象引用的值)的原因。
我不知道newHowDoYouFeel发生了什么,但是对于howDoYouFeels数组,它看起来像是由以下方法返回的一个或多个howDoYouFeel对象:
context.executeFetchRequest(fetchRequest, error: &error)
尚未设置任何成员。您在最后的代码摘录中看到的是一个howDoYouFeel,它已创建,但在打印语句之前一直保持不变。
或者至少这是我的新手观点。我将检查您的提取请求(无论是其代码还是其实现)是否可能导致此问题。