淺談 CoreData

首先來看一下iOS的數據持久化的存儲方式都有哪幾類?分別適用于什么場合?

1).XML屬性列表(Property List 常簡稱為Plist)
適用場合:只能存儲OC常用數據類型(NSString、NSDictionary、NSArray、NSData、NSNumber等類型),而不能直接存儲自定義模型對象

2).偏好設置:保存比較簡單的用戶信息,NSUserDefaults是個單例類,用于存儲少量數據。NSUserDefaults實際上對plist文件操作的封裝,更方便我們直接操作,一般用于存儲系統級別的偏好設置。比如我們經常將登錄后的用戶的一些設置(比如UserName和PassWord)通過NSUserDefaults存儲到plist文件中。

3).對象歸檔:保存自定義的對象,一次性存儲(遵守協議 實現方法) 大批量數據效果不太好.自定義對象應用范圍很廣,因為它對應著MVC中的Model層,即實體類。對自定義對象的歸檔顯得重要的多,因為很多情況下我們需要在Home鍵之后保存數據,在程序恢復時重新加載,歸檔是一個好的選擇.

4).SQLite:輕型的嵌入式關系型數據庫(主要做緩存:就是當用戶打開界面時,顯示的不是空白) ,它占用資源非常的低,只能放在在手機里

5).CoreData
CoreData是對SQLite的封裝,面向過程(沒有sql語句),對存儲方式的封裝,可以讓用戶在不關心數據的情況在對數據進行增刪改查的操作.
Core Data是iOS5之后才出現的一個框架,它提供了對象-關系映射(ORM)的功能,即能夠將OC對象轉化成數據,保存在SQLite數據庫文件中,也能夠將保存在數據庫中的數據還原成OC對象。在此數據操作期間,不需要編寫任何SQL語句.
首先創建一個數據庫

//設置成員變量
@property (nonatomic, strong) NSManagedObjectContext *context;
@property (nonatomic, strong) NSArray *allDatas;
//NSPersistentStoreCoordinator
//持久化存儲小助手   (負責創建數據庫)
//操作權限   上下文 (負責增刪改查)
NSManagedObjectContext *context = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];
    
    self.context = context;
    
    //指定一個持久化存儲小助手 創建數據庫
    
    //告訴小助手創建一個怎樣的數據庫
    NSString *path = [[NSBundle mainBundle]pathForResource:@"_coreData" ofType:@"momd"];
    
    //管理器對象的模型   參數1  url 路徑
    NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path]];
    
    
    NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:managedObjectModel];
    
    
    //沙盒路徑
    NSString *pathDatabase = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"coreData.sqlite"];
    
    [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:pathDatabase] options:nil error:nil];
    
    context.persistentStoreCoordinator  = persistentStoreCoordinator;
    macdown
    //有了上下文  有了小助手
    //創建一個實體 有Police的信息姓名 身高 體重屬性
   NSLog(@"%@",pathDatabase);

向實體(數據表)添加數據

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XSPolice" inManagedObjectContext:self.context];
        XSPolice *police = [[XSPolice alloc]initWithEntity:entityDescription insertIntoManagedObjectContext:self.context];
police.name = [NSString stringWithFormat:@"張三-%zd",i];
police.height = @(1.8);
police.weight = @(80);
[self.context save:nil];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,200評論 30 471
  • 沙盒 Plist Preference偏好設置 NSKeyedArchiver歸檔 / NSKeyedUnarch...
    追風者366閱讀 3,383評論 0 6
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 每個人心中都有自己的鬼 ---宋
    高_a229閱讀 151評論 0 0
  • 四十歲生日 理想一下癟了下去 腳下的路一下臃腫了起來 四十歲生日 老婆依然不理我 孩子癡迷在手機游戲里 四十歲生日...
    利君理療閱讀 134評論 0 1