我不知道为什么,但是我的一些数据为零和零值。
我的实体由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,它已创建,但在打印语句之前一直保持不变。

或者至少这是我的新手观点。我将检查您的提取请求(无论是其代码还是其实现)是否可能导致此问题。

07-28 13:02