iOS_SN_CoreDate(一)封裝使用

來源:互聯網
上載者:User

標籤:

 

看過一篇封裝CoreData的文章挺不錯,有基本使用封裝,但是沒有寫怎麼與tableView結合使用,我自己用的過程有些小波折,自己做了一個demo,大家可以看源碼一些基本使用應該不難了,

 

原文:http://blog.csdn.net/pengyuan_d/article/details/40657225?utm_source=tuicool&utm_medium=referral

(1)建立一個Data Model檔案,命名為MyModel.xcdatamodeld

(2)建立Users表,添加的欄位

(3)建立NSManagedObject subclass表實體檔案

(4)在Users.m檔案中,覆寫description方法

 

CoreDataDBHelper.h #import <Foundation/Foundation.h>  #import <CoreData/CoreData.h>    // 本地檔案儲存體的路徑  #define PATH [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/sqlite.db"]    #define MODEL_NAME @"MyModel"    @interface CoreDataDBHelper : NSObject  {      // 1.資料模型對象      NSManagedObjectModel *_managedObjectModel;            // 2.建立本地持久檔案對象      NSPersistentStoreCoordinator *_persistentStoreCoordinator;            // 3.管理資料對象      NSManagedObjectContext *_managedObjectContext;  }    // 設計成單例模式  + (CoreDataDBHelper *)shareCoreDataDBHelper;    // 添加資料的方法  - (BOOL)insertDataWithModelName:(NSString *)modelName            setAttributWithDic:(NSDictionary *)params;    // 查看  /*     modelName           :實體物件類的名字     predicateString     :謂詞條件     identifers          :排序欄位集合     ascending           :是否升序  */  - (NSArray *)selectDataWithModelName:(NSString *)modelName                       predicateString:(NSString *)predicateString                                  sort:(NSArray *)identifers                             ascending:(BOOL)ascending;    // 修改  - (BOOL)updateDataWithModelName:(NSString *)modelName                  predicateString:(NSString *)predicateString               setAttributWithDic:(NSDictionary *)params;    // 刪除  - (BOOL)deleteDataWithModelName:(NSString *)modelName                  predicateString:(NSString *)predicateString;    @end  

CoreDataDBHelper.m

  #import "CoreDataDBHelper.h"    @implementation CoreDataDBHelper    - (instancetype)init  {      self = [super init];      if (self)      {          // 1.資料模型對象          NSURL *modelUrl = [[NSBundle mainBundle] URLForResource:MODEL_NAME withExtension:@"momd"];          _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelUrl];                    // 2.建立本地持久檔案對象          _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_managedObjectModel];          // 設定本機資料的儲存位置          NSURL *fileUrl = [NSURL fileURLWithPath:PATH];                    [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:fileUrl options:nil error:nil];                    // 3.管理資料對象          _managedObjectContext = [[NSManagedObjectContext alloc] init];          [_managedObjectContext setPersistentStoreCoordinator:_persistentStoreCoordinator];      }      return self;  }      // 設計成單例模式  + (CoreDataDBHelper *)shareCoreDataDBHelper  {      static CoreDataDBHelper *coreDataDBHelper = nil;      static dispatch_once_t onceToken;      dispatch_once(&onceToken, ^{          coreDataDBHelper = [[CoreDataDBHelper alloc] init];      });            return coreDataDBHelper;  }    // 添加資料的方法  /*     params : @{                    @"name":@"張三",                   @"age":@20              }  */  - (BOOL)insertDataWithModelName:(NSString *)modelName               setAttributWithDic:(NSDictionary *)params  {      NSEntityDescription *entity = [NSEntityDescription insertNewObjectForEntityForName:modelName inManagedObjectContext:_managedObjectContext];            // 遍曆參數字典      for (NSString *key in params)      {          SEL selector = [self selWithKeyName:key];          if ([entity respondsToSelector:selector])          {              [entity performSelector:selector withObject:params[key]];          }      }      [_managedObjectContext insertObject:entity];            // 儲存到本地      return [_managedObjectContext save:nil];  }    // 查看  /*  modelName           :實體物件類的名字  predicateString     :謂詞條件  identifers          :排序欄位集合  ascending           :是否升序  */  - (NSArray *)selectDataWithModelName:(NSString *)modelName                       predicateString:(NSString *)predicateString                                  sort:(NSArray *)identifers                             ascending:(BOOL)ascending  {      // 1.建立實體物件      NSEntityDescription *entity = [NSEntityDescription entityForName:modelName inManagedObjectContext:_managedObjectContext];            // 2.建立一個查詢對象      NSFetchRequest *request = [[NSFetchRequest alloc] init];      // 告訴查詢對象你要查詢的資料類型      [request setEntity:entity];            // 添加查詢條件      if (predicateString != nil || [predicateString isEqualToString:@""])      {          NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString];          [request setPredicate:predicate];      }                  // 3.設定排序      NSMutableArray *sortDescriptors = [NSMutableArray array];      for (NSString *identifer in identifers)      {          // 建立排序對象          NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:identifer ascending:ascending];          // 把排序對象添加到數組中          [sortDescriptors addObject:sortDescriptor];      }      // 把排序對象設定到查詢對象裡面      [request setSortDescriptors:sortDescriptors];            // 3.開始查詢      return [_managedObjectContext executeFetchRequest:request error:nil];  }      // 修改  - (BOOL)updateDataWithModelName:(NSString *)modelName                  predicateString:(NSString *)predicateString               setAttributWithDic:(NSDictionary *)params  {      // 擷取所有需要修改實體物件      NSArray *entitys = [self selectDataWithModelName:modelName predicateString:predicateString sort:nil ascending:NO];            // 遍曆所有的實體物件      for (NSEntityDescription *entity in entitys)      {          // 修改對象的屬性          for (NSString *key in params)          {              SEL selector = [self selWithKeyName:key];              if ([entity respondsToSelector:selector])              {                  [entity performSelector:selector withObject:params[key]];              }          }      }            return [_managedObjectContext save:nil];        }    // 刪除  - (BOOL)deleteDataWithModelName:(NSString *)modelName                  predicateString:(NSString *)predicateString  {      // 擷取所有需要修改實體物件      NSArray *entitys = [self selectDataWithModelName:modelName predicateString:predicateString sort:nil ascending:NO];            // 遍曆所有的實體物件      for (NSEntityDescription *entity in entitys)      {          // 刪除對象          [_managedObjectContext deleteObject:entity];                }            return [_managedObjectContext save:nil];  }      // 通過一個字串反回一個set方法  - (SEL)selWithKeyName:(NSString *)keyName  {      NSString *first = [[keyName substringToIndex:1] uppercaseString];      NSString *end = [keyName substringFromIndex:1];      NSString *selString = [NSString stringWithFormat:@"set%@%@:",first,end];      return NSSelectorFromString(selString);  }    @end  

iOS_SN_CoreData Demo 

iOS_SN_CoreDate(一)封裝使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.