当前位置: 首页 > 编程日记 > 正文

coredata Lightweight Migration 心得

关于coredata 网上的相关资料比较少,大部分是基本用法。于是便找到苹果官方文档进行深入学习。

分享一下心得,如果用了coredata 必须懂得 coredata Migration,否则app版本更新 core data model schema 变化很大可能导致持久化coredata 出错,程序崩溃。

以下几种情况 可以简单的用  Lightweight Migration 迁移数据到新版本Model, 如下。

   NSDictionary *options = [NSDictionarydictionaryWithObjectsAndKeys:[NSNumbernumberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,     [NSNumbernumberWithBool:YES], NSInferMappingModelAutomaticallyOptionnil];

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinatorallocinitWithManagedObjectModel:[selfmanagedObjectModel]];

    if (![_persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:storeURL options:options error:&error]) 

  //其他代码

--------------几种情况概括如下--------------------

    1,Simple addition of a new attribute.(为某个Entity 添加属性)

2,Removal of an attribute.(为某个Entity 删除属性)

3,A non-optional attribute becoming optional.

4,An optional attribute becoming non-optional, and defining a default value.

    5,Renaming an entity or property.

  • Adding relationships and changing the type of relationship

    • You can add a new relationship or delete an existing relationship.

    • Renaming a relationship (by using a renaming identifier, just like an attribute)

    • Changing a relationship from a to-one to a to-many, or a non-ordered to-many to ordered (and visa-versa)

  • Changing the entity hierarchy

    • You can add, remove, rename entities

    • You can create a new parent or child entity and move properties up and down the entity hierarchy

    • You can move entities out of a hierarchy。

  <注意>You cannot, however, merge entity hierarchies; if two existing entities do not share a common parent in the source, they cannot share a common parent in the destination。这种情况不能用轻量迁移。

官方文档:

https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html#//apple_ref/doc/uid/TP40004399-CH4-SW1

   下篇 《 core data model mapping 》

相关文章:

设计模式之职责链模式(Chain of Responsibility)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

澎思科技与新加坡国立大学等高校共研AI产品加快技术应用落地

2019年7月31日&#xff0c;中国人工智能企业澎思科技宣布新加坡研究院正式揭牌成立&#xff0c;并宣布成立澎思技术委员会&#xff0c;推动全球视野下的人工智能技术研究。同时&#xff0c;澎思科技与新加坡国立大学、新加坡南洋理工学院等重量级机构签订战略合作。未来&#x…

codility上的问题 (22)

问题描述&#xff1a; 用1 * 1&#xff0c; 1 * 2的矩形覆盖一个n行m列的矩形&#xff0c;问有多少种方法。 数据范围 : n [1..10^6], m [ 1..7] 要求复杂度&#xff1a; 时间 O(log(n) * 8 ^m)) 空间 O(4^m) 分析&#xff1a;这个题跟之前那个木块砌墙问题一样…… 稍作修…

session 与 cookie的区别

session和cookie是网站浏览中较为常见的两个概念&#xff0c;也是比较难以辨析的两个概念&#xff0c;但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅&#xff0c;及作者个人的应用体会&#xff0c;对这两个概念做一个简单的阐述和辨析…

设计模式之迭代器模式(Iterator)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

澎思科技成立新加坡研究院,将与多家机构合作研发自动驾驶等项目

2019 年 7 月 31 日&#xff0c;中国人工智能企业澎思科技宣布新加坡研究院正式揭牌成立&#xff0c;并成立澎思技术委员会&#xff0c;由来自新加坡国立大学、新加坡南洋理工学院等四名 AI 专家/教授担任澎思技术委员会首批委员。此外&#xff0c;澎思科技还与新加坡国立大学、…

对象----《你不知道的JS》

最近在拜读《你不知道的js》&#xff0c;而此篇是对于《你不知道的js》中对象部分的笔记整理&#xff0c;希望能有效的梳理&#xff0c;并且深入理解对象 一、语法 对象两种定义形式:声明&#xff08;文字&#xff09;形式、构造形式 声明&#xff08;文字&#xff09;形式 var…

Android:FragmentTransaction

为什么80%的码农都做不了架构师&#xff1f;>>> FragmentTransaction FragmentManager&#xff1a;能够实现管理activity中fragment. 通过调用activity的getFragmentManager()取得它的实例.。 FragmentTransaction&#xff1a;对fragment进行添加,移除,替换,以及执…

设计模式之解释器模式(Interpreter)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

自动驾驶激荡风云录:来自圈内人的冷眼解读

作者 | 黄浴&#xff0c;奇点汽车美研中心总裁兼自动驾驶首席科学家编辑 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;最近一个月&#xff0c;有关自动驾驶的新闻层出不穷&#xff0c;也是少有的热闹。先说正面的吧。激情的焰火 ▌传感器之争2019 年 7 月&a…

激动人心的AutoCAD .net开发技术

自从了解了vsto和sc&#xff08;SmartClient&#xff09;技术后&#xff0c;对以前Win32的二次开发技术&#xff0c;再也没有一点兴趣。对Office VBA, AutoCAD lisp, VBA, PowerBuilder PoserScript, MapInfo MapBasic 的开发&#xff0c;简直室深恶痛绝&#xff0c;希望一切…

Linux Shell简介

目录 版权信息前言第一篇&#xff1a;超级工具&#xff0f;Terminals&#xff0c;xterms 和 Shells 一、超级工具二、为了说明 shell &#xff0c;这里需要一些背景知识。 1、Terminals, xterms 与 Shells2、终端&#xff08;Terminals&#xff09;3、xterms4、Shells 三、Shel…

浙大博士130页论文,教你用人工智能挑西瓜

作者 | 神经小姐姐来源 | HyperAI超神经&#xff08;ID&#xff1a;HyperAI&#xff09;【导读】要问什么水果和夏天最搭&#xff0c;答案一定是西瓜。作为西瓜生产与消费大国&#xff0c;中国在 2018 年以全世界 20% 的人口消耗掉全世界 70% 的西瓜&#xff0c;人均 100 斤。如…

一些要注意的地方

1、tomcat启动一直保持在starting状态时&#xff0c;最简单的原因就是时间过短&#xff0c;将时间变长就可以了。若还不能解决时&#xff0c;还可能就是端口号被占用了。通过netstat -nao | findstr ""可以看到占用你所使用的端口号的进程id,然后通过tasklist | find…

NEON在Android中的使用举例

1、 打开Eclipse&#xff0c;File-->New-->AndroidApplication Project-->Application Name:Hello-Neon, Project Name: Hello-Neon,Package Name:com.hello_neon.android, Minimum Required SDK:API 9:Android 2.3(Gingerbread),Next-->去掉Create custom launch…

Android中的JSON详细总结

1、JSON(JavaScript Object Notation) 定义&#xff1a; 一种轻量级的数据交换格式&#xff0c;具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案&#xff08;有点类似于正则表达式&#xff0c;获得了当今大部分语言的支持&#xff09;&#xff0c;从…

新一届最强预训练模型上榜,出于BERT而胜于BERT

作者 | Facebook AI译者 | Lucy编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】预训练方法设计有不同的训练目标&#xff0c;包括语言建模、机器翻译以及遮蔽语言建模等。最近发表的许多论文都使用了微调模型&#xff0c;并预先训练了一些遮蔽语…

Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例

1、 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机&#xff1b; 2、 从 https://developer.android.com/tools/sdk/ndk/index.html下载android-ndk32-r10-linux-x86.tar.bz2&#xff1b; 3、 将android-ndk32-r10-linux-x86.tar.bz2拷贝到Ubuntu的/home/spring/NE…

Neon Intrinsics各函数介绍

#ifndef __ARM_NEON__ #error You must enable NEON instructions (e.g. -mfloat-abisoftfp -mfpuneon) to use arm_neon.h #endif/*(1)、正常指令&#xff1a;生成大小相同且类型通常与操作数向量相同的结果向量&#xff1b; (2)、长指令&#xff1a;对双字向量操作数执行运算…

ubuntu bind9 配置简单记录

ubuntu bind9 配置简单记录ubuntu版本&#xff1a;Ubuntu 12.04.2bind9安装&#xff1a;apt-get install bind9bind9配置文件目录&#xff1a;/etc/bindbind9主要配置文件&#xff1a;named.conf.local以及对应db配置1&#xff0c;主服务器配置&#xff1a;rootubuntu:/etc/bin…

不止最佳长论文,腾讯AI在ACL上还有这些NLP成果

编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】7 月 31 日晚&#xff0c;自然语言处理领域最大顶会 ACL 2019 公布了今年的八个论文奖项&#xff0c;其中最佳长论文的获奖者被来自中国科学院大学、中国科学院计算技术研究所、腾讯 We…

python中package机制的两种实现方式(转载)

当执行import module时&#xff0c;解释器会根据下面的搜索路径&#xff0c;搜索module1.py文件。 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/local/lib/python) 事实上&#xff0c;模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。 sys…

Magento如何使用和设置CookieSession

2019独角兽企业重金招聘Python工程师标准>>> 给大家介绍两个Magento的核心对象&#xff0d;Mage_Core_Model_Cookie & Mage_Core_Model_Session 首先介绍Mage_Core_Model_Cookie&#xff0c;这个对象主要是用来设置Cookie的&#xff0c;里面主要下列方法&#x…

AI+DevOps正当时

随着业务复杂化和人员的增加&#xff0c;开发人员和运维人员逐渐演化成两个独立的部门&#xff0c;他们工作地点分离&#xff0c;工具链不同&#xff0c;业务目标也有差异&#xff0c;这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边&#xff0c;…

clientdataset 用法

影响ClientDataSet处理速度的一个因素TClientDataSet是Delphi开发数据库时一个非常好的控件。有很强大的功能。我常常用ClientDataSet做MemoryDataSet来使用。还可以将ClientDataSet的数据保存为XML&#xff0c;这样就可以做简单的本地数据库使用。还有很多功能就不多说了。在使…

用vs2010编译vigra静态库及简单使用举例

1、 从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz&#xff0c;并加压缩到D:\soft\vigra&#xff0c;生成vigra-1.10.0文件夹&#xff1b; 2、 从http://www.cmake.org/cmake/resources/software.html下载CMake并安装&#xff1b; …

39个超实用jQuery实例应用特效

2019独角兽企业重金招聘Python工程师标准>>> 1.Contextual Slideout&#xff1a;上下文滑动特效 2.Revealing Photo Slider&#xff1a;图片幻灯片特效 3.Fancy Box&#xff1a;魔幻盒 4.Scrollable&#xff1a;滚动特效 5.Flip&#xff1a;翻转特效,实现4个方向…

Android.mk和Application.mk文件语法规范说明及举例

以下英文内容摘自&#xff1a;http://www.kandroid.org/ndk/docs/OVERVIEW.html The Android NDK is a set of tools that allows Android application developers to embed native machine code compiled from C and/or C source files into their application packages.NDK d…

ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API

本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API。 新建项目&#xff0c;选择"ASP.NET MVC 4 Web应用程序"。 选择"基本"项目模版。 在Controllers文件夹下添加一个名称为"TestController"的空API控制器。 在引用文件夹中多了以下…

滴滴自动驾驶部门成立独立公司,CTO张博兼任新公司CEO

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;8 月 5 日&#xff0c;滴滴出行官方微信公众号发文&#xff0c;宣布旗下自动驾驶部门升级为独立公司。目前&#xff0c;新成立公司的名称还未曝光&#xff0c;但据官方介绍将专注于自动驾驶…