Tag: 核心数据

核心数据VS Sqlite或FMDB …?

现在这可能看起来像一个重复的线程,但我的问题是,我已经阅读了很多问题,如核心数据与SQLite 3等,但这些都是2 – 3年。 我也读过FMDB是由于核心数据在iOS上不被支持而开发的,所以不应该再使用它。 另一方面,我已经读过,不应该使用核心数据作为数据库。 所以我很困惑,是否应该使用核心数据来存储对象 。 我的意思是我应该决定使用哪一个? 有没有任何指导提供的苹果或别人..或者是什么东西,会随着时间的推移。

我怎样才能投到NSManagedObject但不是我的实体的types?

我在一个新项目中使用了Core Data的Swift样板代码。 我的.xcdatamodeld文件有一个单一的实体定义( Task )与一个单一的属性( name )。 我有一个Task.swift文件,看起来像这样: import CoreData class Task: NSManagedObject { @NSManaged var name: String } 当我运行这个,它的工作原理: var firstTask = NSEntityDescription.insertNewObjectForEntityForName("Task", inManagedObjectContext: managedObjectContext) as NSManagedObject firstTask.setPrimitiveValue("File my TPS reports", forKey: "name") var error: NSError? managedObjectContext.save(&error) 我甚至可以进入iOS模拟器使用的SQLite数据库,并确认添加了该行。 但是,当我运行与上面完全相同的代码,但与as Task而不是as NSManagedObject ,我得到一个崩溃与错误消息Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) ,与var firstTask …行。 如果继续执行,每当我提前执行时,就会在线程1的顶部获得EXC_BAD_ACCESS和0 misaligned_stack_error_ 。 为什么这个演员会导致所有这一切?

(NSFetchedResultsController):无法读取caching文件来更新存储信息时间戳

我升级了我的项目到Xcode 8.现在,我得到与Xcode 8和iOS 10组合的错误日志。 在下面的代码中将cacheName设置为nil似乎可以修复它。 NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:NULL cacheName:@"myCache"]; 我该如何摆脱这个错误日志并在我的FRC中使用caching?

xcode 7使用额外的CoreDataProperties类别生成核心数据实体

我在xcode 7有奇怪的新function,当我生成新的NSManagedObject子类,然后xcode创build两个类:实体和它们的CoreDataProperties类别,其中包含完整的实现。 下面的图片是我的意思。 我找不到任何有关这方面的logging信息,谁可以解释它为什么这样工作

了解一对多核心数据删除规则

核心数据关系删除规则我有点模糊。 所以如果有人能帮我回答一些关于他们的问题。 我有实体A和B.A与B有多对多的关系,B和A有一对一的关系。 A <— >> B 现在,如果我将A的删除规则设置为Cascade,我知道它将删除与之相关的所有B。 但是如果我把它设置为Nullify,它会把Bs设置为NIL还是将外键设为Nil? 而且我到处关注着从B到A的关系,我应该把它设置为Nullify吗? 那只是在A上排除“B对象”? 或者它将否定与A有关的所有B? 怎么样Cascade? 它会删除所有与A相关的B,还是只删除B? 或者我只是在B到A的关系上使用“No Action”,所以当我删除B时,A不会发生变化,但是对B的引用将不存在? 我很高兴与这些混淆,所以请原谅我的问题。 谢谢。

CoreData – 不能将空string设置为属性的默认值

我在我的datamodel有一个string属性,目前是可选的实体,我想将其转换为一个默认值为空string的必需属性。 正如其他人发现的那样,在Xcode CoreData数据build模器中保留默认值为空白会导致validation错误(因为devise者将其解释为NULL),但是将默认值“',”“或@”“作为默认值导致这些文字字符被解释为默认值,而不是根据需要的空的零长度string。 但是,我确实在Google上find了这个线程 ,除了这个解决scheme真的很难看(模型定义在.xcdatamodel和objc源文件之间划分)之外,它也不适用于轻量级迁移,因为这些迁移完全基于.xcdatamodel文件和实体实现中的objc逻辑没有加载。 在数据模型devise器中有没有办法实现这一点?

非法企图在不同背景下的对象之间build立“xyz”关系

我使用Apple的CoreDataBooks示例应用程序作为在后台将数据拉入辅助pipe理对象上下文的基础,然后将这些数据合并到主pipe理对象上下文中。 我正在使用的数据是一个与Owner实体(称为“所有者”)具有一对一关系的Book实体。 Owner实体与Book (称为“书”)具有多对多的关系。 我的数据是一个XML格式的文档: <Owner> <Name>alexpreynolds</Name> <ID>123456</ID> </Owner> <Books> <Book>Book One</Book> <Book>Book Two</Book> … <Book>Book N</Book> </Books> Book One通过Book N与一个Owner ( "alexpreynolds, 123456" )相关联。 我将它parsing成一个Owner实例和一个由Book实例组成的NSMutableSet 。 当我第一次尝试保存时,它保存的很好,合并的数据显示在表格视图中。 然而,在第二次保存时,当XML内容包含新书时,它不起作用。 以下是发生的事情: 然后我尝试加载一个XML文档,其中包含一个尚未在主pipe理对象上下文中的Book 。 新Book使用与其他Book相关联的Owner 。 我有挑选出这个唯一的Ownerpipe理对象(我已经在我的主要pipe理对象上下文中)和主要MOC中找不到唯一的Book例程。 由此,我在二级商务部创build了一个新的Book对象,并将其“ owner ”关系设置为指向我在主要商业机构中find的唯一Owner 。 当我保存时,我得到以下错误: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship […]

Core-Data iPhone:找不到NSManagedObjectModel

我正在使用Apple的CoreDataBooks示例项目作为核心数据的学习辅助工具。 我修改了应用程序,以便应用程序加载时,我首先显示一个菜单页面 – 而不是书籍tableview(RootViewController)。 我做了以下几件事: 我在界面生成器中创build了一个菜单页面(只是一个带有button的视图) CoreDataBooksAppDelegate.h现在看起来像这样: // for the menu @class MenuViewController; @interface CoreDataBooksAppDelegate : NSObject <UIApplicationDelegate> { NSManagedObjectModel *managedObjectModel; NSManagedObjectContext *managedObjectContext; NSPersistentStoreCoordinator *persistentStoreCoordinator; UIWindow *window; UINavigationController *navigationController; //for the menu MenuViewController *viewController; } – (IBAction)saveAction:sender; //for the menu @property (nonatomic, retain) IBOutlet MenuViewController *viewController; @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; @property (nonatomic, retain, […]

核心数据 – 数据库中行的主键ID

假设我有一个存储在核心数据中的书籍列表。 我想通过它的主键ID来search一本书。 我知道由Core Data创build的sqlite文件在每个表中都有一个ID列,但是这似乎并没有暴露给我。 有没有人有任何build议? 谢谢!

我如何才能知道iPhone用户目前是否有密码设置和encryptionfunction?

我正在写一个iPhone应用程序,要求对其数据进行encryption。 我已经学会了如何通过设置NSFileProtectionComplete属性来打开文件的encryption。 我也知道如何检查iPhone版本,以确保它们运行的​​是iOS 4.0或更高版本。 我已经意识到,如果用户没有select密码,并且没有在设置>常规>密码locking屏幕上专门启用数据保护,那么数据实际上不受保护。 我想popup一个警告,并告诉用户他们必须启用密码并打开数据保护(需要在前4个iPhone上进行备份和恢复),然后退出应用程序(如果他们没有密码的话)并启用数据保护。 无论如何,我无法弄清楚这些设置的状态。 我发现的所有API,比如UIApplication中的“protectedDataAvailable”,如果数据保护被禁用,所有API都会成功。