我正在使用Xcode6.1将现有的Objective-C电视节目应用程序复制到新的Swift版本,但我遇到了一些CoreData问题。我创建了一个包含4个实体的模型,创建了它们的NSManagedObject子类(在Swift中),并且所有文件都设置了正确的应用程序目标(用于“编译源”)。每当我尝试插入新实体时,我仍然会收到此错误:CoreData:warning:Unabletoloadclassnamed'Shows'forentity'Shows'.Classnotfound,usingdefaultNSManagedObjectinstead.一些评论:保存到CoreData时
根据文档:Youshouldnotoverrideinit.YouarediscouragedfromoverridinginitWithEntity:insertIntoManagedObjectContext:您应该改为使用awakeFromInsert或awakeFromFetch。如果我只想将某些属性设置为当前日期或类似日期,这很好,但如果我想发送另一个对象并根据其信息设置属性怎么办?例如,在名为“Item”的NSManagedObject子类中,我想要一个initFromOtherThing:(Thing*)thing,其中项目的名称设置为事物的名称。我想避免“只需要记住”每
我认为将NSManagedObject的自定义代码放在子类的类别中是一种常见的做法,因为Xcode会在编辑模型时覆盖您生成的子类。我只是想确认这一点。我见过一些例子,人们说将类别与已经在类层次结构中实现的方法结合起来是不好的。我不确定这是否仅适用于具有实际类别的类已经实现该方法的情况,还是适用于所有情况。 最佳答案 覆盖类别中的方法的问题是您不能像通常使用[superdoSomething]那样调用原始实现。通常,当您重写一个方法时,您仍然希望能够在执行原始实现之前和/或之后调用原始实现来做一些额外的事情。一个相当干净的解决方案是让
我有一个类,它在某个时候通过CoreData获取获取一堆数据,然后插入对象,这些对象是在XCode中以通常的CoreData方式创建的,因此是从NSManagedObject派生的,到一个NSMutableSet。根据事情的进展情况,其中一些对象可能最终会出现在其他几个集合中。到目前为止,一切都很好。但接下来会发生以下情况:NSMutableArray*anArray=[NSMutableArrayalloc]init;[currentResultsminus:previousResults];//bothareNSMutableSetsfor(MyObject*objincurren
我的项目启用了ARC(build设置将Objective-C引用计数设置为YES)。没有文件异常(exception),它在项目范围内启用。(最新稳定版Xcode)。当我通过File>New为CoreData实体创建NSManagedObject子类时,生成的header在其属性声明中使用以下内容:@property(nonatomic,retain)但是“保留”不是ARC!!这是一个错误,还是我遗漏或不理解的东西?没有构建警告-如果这是一个错误,我该如何补救? 最佳答案 retain是strong的同义词。所以在这种情况下使用re
我想处理商店中每个Media实体中名为originalImage的数据属性。问题是尽管有自动释放,但每次通过valueForKey访问时内存都会增加,最终应用程序会崩溃。或者它可能正在加载大量的单个NSData项目,这就是问题所在,但Instruments显示它是一个稳定倾斜的内存使用图,直到它最终给我一个内存警告然后崩溃。我还没有开始编写其余的代码,所以我没有执行一些我没有向您展示的隐藏任务。NSFetchRequest*request=[[NSFetchRequestalloc]init];NSEntityDescription*entity=[NSEntityDescriptio
如何为一对多关系正确配置CoreData数据模型和NSManagedObjects?我觉得我错误地配置了xcdatamodeld文件,但我找不到问题所在。我生成了一个新的单View项目,并选择了CoreData。下面的代码很简单,我可以解释这个问题。Parent*parent=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Parent"inManagedObjectContext:[selfmanagedObjectContext]];Child*child=[NSEntityDescriptioninsertNewObje
我正在构建一个带有ViewController的应用程序,该ViewController表示用于创建和编辑Task对象的表单。它具有以下行为:在Controller初始化时,Task对象(NSManagedObject子类)在MOC中初始化NSNotificationCenter为View中的每个输入设置观察者。当输入的值发生变化时,Task对象的相应属性会通过观察者的分配方法进行更新。(例如-(void)taskNameChanged;)当用户点击Save时,Task对象被提交到数据存储。如果用户点击取消,Task对象将从MOC中丢弃。我觉得有更好的方法可以做到这一点。此类交易最常见
我在Appdelegate类中编写了两个单独的函数fetchRecords和displayRecords。fetchRecords函数将从实体中获取所有记录并且它工作正常。displayRecords函数接受来自fetchRecords函数的返回值并打印所有记录逐个。我有一个ViewController调用这两个函数来完成所需的任务。我的问题是displayRecords中的result.count显示获取的记录中可用的记录总数。当一条一条地打印记录时,该值为nil。overridefuncviewDidLoad(){super.viewDidLoad()letfetchedRecor
我正在为iOS创建一个新项目。我使用模板Master-Detail和框架coredata:如果我单击xcdatamodel文件然后转到Editor->CreatedNSManagedObjectsubclass我得到错误:AppleMach-OLinkererror:linkercommandfailedwithexitcode1(use-vtoseeinvocation)该项目是全新的。 最佳答案 您需要删除这些文件,因为它们是重复的。Xcode现在自动生成和管理核心数据文件。因此您不需要通过Editor->CreatedNSMa