Tag: 核心数据

“核心数据不是一个关系型数据库”。为什么这个重要知道?

我意识到这可能是很多人的常识,所以如果这似乎是一个愚蠢的问题,所以很抱歉。 我正在努力学习iOS编程的核心数据,并且我反复阅读并听说Core Data(CD)不是一个关系数据库。 但是关于这一点很less有人说,或者为什么超出学术界的意义是非常重要的。 我的意思是至less在function上,似乎你可以使用CD,好像它是一个数据库的大多数事情 – 存储和提取数据,运行查询等。从我的基本理解,我真的不知道它是如何不同数据库。 我并不质疑这个区别是重要的。 我相信很多聪明的人不会浪费时间在这一点上,如果没有用的理解。 但是我想请某人解释 – 理想情况下用例子 – CD不是一个关系数据库如何影响我们如何使用它? 或者,如果我没有被告知CD不是一个关系数据库,那么这会如何影响我作为Objective-C / Swift程序员的性能呢? 如果把CD当作关系数据库,有人可能会尝试做不正确的事情吗? 或者,有关系数据库做不到的事情或者CDdevise做得不好? 谢谢大家的集体智慧。

CoreData上的UserInfo字典

苹果核心数据文档的这一部分是什么意思? 用户信息字典 托pipe对象模型中的许多元素(实体,属性和关系)都具有关联的用户信息字典。 您可以将所需的任何信息放入用户信息字典中作为键值对。 放入用户信息字典的常用信息包括实体的版本详细信息以及谓词用于提取属性的值。 我明白,默认情况下,实体具有该字典,但我无法find在coredata实体或属性上finduserInfo。

我不能在Swift项目的两个目标中使用我的核心数据模型

核心数据模型中实体模型的类名称必须具有应用程序名称。 因此,对于名为User的实体,模型编辑器中的类名称必须是MyAppName.User。 这工作正常,直到我添加了第二个目标到我的项目。 新项目期望实体类名称为SecondAppTargetName.User。 我们如何使用相同的核心数据模型支持两个目标? 我试着预先join$ {PRODUCT_NAME} .User,而不是期待它的工作。 它不起作用。 关于如何在目标之间共享一个核心数据模型以及如何满足Swift项目在模型编辑器中将PRODUCT_NAME预先添加到类中的想法? 编辑:从这里的苹果文件显示,模块实体检查器中的类名添加模块名称作为前缀是首选的行为。 如果是这样,这看起来像一个大洞,因为它排除了多个目标使用相同的数据模型。 我仍然没有find解决办法。 在这里的一些post已经表明,在托pipe对象的Swift类定义之前使用@objc(ClassName)将做到这一点,但我还没有能够validation。

核心数据multithreading读取logging

我对coredata中的multithreading有一个疑问。 如果我们使用multithreading,我们应该使用单独的NSManagedObjectContext来插入新的数据或更新,否则我们可以使用父子上下文方法。 但是我只创build新的NSManagedObjectContext。 我的问题是,我应该使用单独的NSManagedObjectContext甚至在后台线程中获取也。 如果没有(即我们可以使用主队列NSManagedObjectContext),为什么即时获取__psynch_mutexwait错误。 谢谢,

整数到NSInteger并保存到核心数据

我有一个整数名为弹珠,并试图使用下面的代码将其保存到数组中: [records setValue:marbles forKey:@"marbles"]; 有了这个代码,我得到了警告: 警告:语义问题:指针转换不兼容的整数发送'int'到types'id'的参数 那么,如何设置NSInteger的值。 下一个问题,如何重新将数组上传到核心数据? 我获取数组,进行更改,以及如何将这些更改应用到Core Data? 谢谢

为核心数据写入创build后台线程

我试图重新创build本cocoa系统文章( http://www.cocoanetics.com/2012/07/multi-context-coredata/ )中描述的三层核心数据系统。 我遇到的问题是在自己的后台线程上创build私有MOC。 我没有太多的multithreading经验,应该如何在目标c中完成。 我一直在阅读文章,并试图如何正确地实施这个方法,但我终于承认,我不知道我在做什么。 要创build这种方法,我需要创build一个NSThread并进行pipe理吗? 还是有一种更简单的方式,我不理解?

核心数据:父上下文阻止孩子

我正在做一些有核心数据的应用程序的后台处理。 后台处理是在一个子managedObjectContext上完成的。 上下文初始化 appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate // the moc in appDelegate is created with .MainQueueConcurrencyType mainThreadMOC = appDelegate.managedObjectContext! backgroundMOC = NSManagedObjectContext(concurrencyType:NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType) backgroundMOC?.parentContext = mainThreadMOC 后台处理按以下方法完成: // download all new transaction log entries func syncItems() { … set up the query object for parse let moc = CoreDataStore.sharedInstance.backgroundMOC // perform download moc?.performBlock( { self.runQuery(query) […]

核心数据和线程

我正在使用核心数据的应用程序,我知道这不是线程安全的,但正在努力了解如何正确地pipe理这个。 让我解释我到目前为止… 我创build了一个启动pipe理对象的单例,然后可用于所有其他类,因为所有类都接收到相同的pipe理对象地址,所以这似乎正常工作。 然后我有两个按这个顺序执行的类 数据加载。 这将获得logging计数,如果零加载核心数据库。 Tableview然后显示在步骤1中存储的数据。 我的问题是第1步。总是返回零logging,第2步。工作并返回正确的logging计数。 已经做了一些testing与1的问题。是由于它的线程运行,如果我发送请求在同一个线程上创build的pipe理对象完美的作品。 那么,为什么它在第一课。我必须确保请求是在正确的线程,但在第二课。它只是运作,或者它只是纯粹的运气。 有线程和核心数据的推荐和文档化方法吗? 谢谢

Swift – Coredata迁移 – 根据旧的属性值设置新的属性值

我当前的核心数据实体之一 – Entity1 – 具有一个名为isSaved的Boolean属性。 在新的核心数据模型中,我计划删除isSaved属性并添加一个名为type的新的Int属性。 对于所有保存的Entity1对象,我想根据旧核心数据模型中的isSaved值设置type的值。 (例如,如果isSaved为true,则type为1,否则type为2)。 我已经阅读了一些关于轻量级核心数据迁移的文章,但没有一篇似乎有帮助。 只是想知道是否有什么方法可以使我计划的迁移工作?

UITableView与NSFetchedResultsController不会第二次加载

更新3这是第一次运行一个空的数据存储后的日志。 2013-02-07 20:57:06.708 Five Hundred Things[14763:c07] mainMOC = <NSManagedObjectContext: 0x7475a90> 2013-02-07 20:57:06.711 Five Hundred Things[14763:1303] Import started 2013-02-07 20:57:06.712 Five Hundred Things[14763:1303] backgroundMOC = <NSManagedObjectContext: 0x8570070> 2013-02-07 20:57:06.717 Five Hundred Things[14763:c07] FRC fetch performed 2013-02-07 20:57:06.718 Five Hundred Things[14763:c07] numberOfSectionsInTableView returns 1 2013-02-07 20:57:06.720 Five Hundred Things[14763:c07] numberOfSectionsInTableView returns 1 2013-02-07 20:57:06.720 Five Hundred Things[14763:c07] […]