1.在新專案中新增coredata的類庫,並在***-prefix.h中加入
#import
2.拷貝原專案中的.xcdatamodeld檔案到新專案中,新增檔案選擇coredata下nsmanagedobject subclass,選擇data models版本,勾選實體。
如果實體已經存在,要手動的刪除原實體。
#pragma mark - core data stack
- (nsmanagedobjectcontext *)managedobjectcontext
nspersistentstorecoordinator*coordinator = [
self
persistentstorecoordinator];
if (coordinator != nil)
return
_managedobjectcontext; }
- (nsmanagedobjectmodel *)managedobjectmodel
nsurl
*modelurl = [[
nsbundle
mainbundle] urlforresource:
@"***"
withextension:
@"momd"];
_managedobjectmodel
= [[
nsmanagedobjectmodel
alloc] initwithcontentsofurl:modelurl];
return
_managedobjectmodel; }
- (nspersistentstorecoordinator *)persistentstorecoordinator
nsstring*storetype = nssqlitestoretype;
nserror *error = null;
nsurl
*storeurl = [[
self
:@"***.sqlite"];
nsdictionary
*options = [
nsdictionary
dictionarywithobjectsandkeys:
[nsnumber
numberwithbool
:yes
], nsmigratepersistentstoresautomaticallyoption,
[nsnumber
numberwithbool
:yes
nil];
_persistentstorecoordinator= [[
nspersistentstorecoordinator
alloc
] initwithmanagedobjectmodel
:self
.managedobjectmodel]; if
(![_persistentstorecoordinator
addpersistentstorewithtype:storetype configuration:
nilurl:storeurl options:options error:&error])
nsassert1
(yes
, @"failed to create store %@ with nssqlitestoretype", [storeurl
path
]);
}return
_persistentstorecoordinator; }
CoreData版本遷移
如果已經建立好了coredata資料庫,當實體中多了乙個屬性的時候,我們直接去更改資料表中實體,為其增添屬性會發生錯誤,此時需要通過版本更新的方式解決這個問題.1.新增乙個model version檔案 2.設定使用以後要使用的版本 4.刪除之前版本中person實體對應的類,用新版本的person...
Core Data 輕量級遷移
如果只是簡單的改變模型,比如給乙個實體新增乙個新屬性,core data 可以自動進行資料遷移,也就是指輕量級遷移。輕量級遷移基本上和普通遷移是一樣的,不過不需要提供對映模型,在對映概況中有介紹 core data自行推斷新模型和目標模型的差異。輕量級遷移在應用開發的早期階段使用非常方便,當你頻繁的...
CoreData的資料遷移
很多人說coredata坑多,現在才感覺到,今天上午寫 的時候,發現了乙個大問題.其實很多簡單的情況,不用這麼麻煩,coredata提供了輕量級的自動資料遷移,比如以下三個情況會自動進行 1.簡單的增加乙個字段 2.把乙個必填字段改為可選字段 3.把可選字段改為必填字段 但一定要定義預設值 1.公升...