Swift核心数据不会永久存储数据

我也有( 这家伙 )同样的问题,但他不告诉解决scheme。 所以,我不得不问你怎么办? 我有一个实体称为兔子,属性是birth_date,breed_date,cage_no,dam_earnum,nes_date,pal_date,rabbit_id,sire_earnum

我的核心数据存储:

var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) var context:NSManagedObjectContext = appDel.managedObjectContext! var request = NSFetchRequest(entityName: "Rabbits") var result:NSArray = context.executeFetchRequest(request, error: nil)! request.includesSubentities = false request.returnsObjectsAsFaults = false var rabbits = NSEntityDescription.insertNewObjectForEntityForName("Rabbits", inManagedObjectContext: context) as! NSManagedObject rabbits.setValue(buckTextField.text, forKey: "sire_earnum") rabbits.setValue(doeTextField.text, forKey: "dam_earnum") rabbits.setValue(cageTextField.text, forKey: "cage_no") rabbits.setValue(breedDate, forKey: "breed_date") rabbits.setValue(palDate, forKey: "pal_date") rabbits.setValue(nesDate, forKey: "nes_date") rabbits.setValue(birthDate, forKey: "birth_date") rabbits.setValue(index, forKey: "rabbit_id") context.save(nil) 

我的代码来检索数据:

 var result: Array = delegate.managedObjectContext.executeFetchRequest(NSFetchRequest(entityName: "Rabbits"), error: &err) println("reslut \(result)") 

所以,当我检索,它给结果数据..但它不是永久存储..如果我退出并运行应用程序,然后以前的数据已经走了..任何人都可以告诉我什么是我的代码的问题…

Joride的一些build议告诉我用下面的代码显示true或false的保存方法的返回值的输出:

 println("delegate: \(delegate); MOC: \(delegate.managedObjectContext)") 

我得到的消息: delegate: <BreedRabbit.AppDelegate: 0x7f8ad9d03b20>; MOC: <NSManagedObjectContext: 0x7f8ad9c300b0> delegate: <BreedRabbit.AppDelegate: 0x7f8ad9d03b20>; MOC: <NSManagedObjectContext: 0x7f8ad9c300b0>

我下一步怎么办?

我认为你是用你的fetchrequest来获取错误的实体。 尝试改变这一点:

 var result: Array = delegate.managedObjectContext.executeFetchRequest(NSFetchRequest(entityName: "Friend"), error: &err) 

对此:

 var result: Array = delegate.managedObjectContext.executeFetchRequest(NSFetchRequest(entityName: "Rabbits"), error: &err) 

数据未被保存的几个可能原因是:

  • 创build持久性存储协调器时使用NSInMemoryStoreType;

  • 在模型编辑器中将实体属性设置为“瞬态”。

请检查,以排除这些可能的原因。