青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
@import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

Core Data是個好東西,在數據儲存操作上速度快,容易操作,是一種類似關系數據庫的東西。但是有些不那么好學,那到底Core Data是怎么操作的呢?怎么用呢?怎么來編程呢?我們一起來學習吧,接下來使用蘋果提供的實例程序Locations來作分析:

>程序介紹:

右側是改程序的截圖,基本上來說就是通過使用Core Location來得到當時的位置,然后在點擊“+”的時候記錄下當時的經緯度。通過UITableViewController的功能來添加,編輯,刪除等功能。整體程序使用Core Data來儲存數據,實體(Entity)為一個位置,包括以下參數:1,時間(收集數據的時間)2,緯度,3,經度

首先我們看看該程序的AppDelegate.h


  1. @interface LocationsAppDelegate : NSObject  {  
  2.     UIWindow *window;  
  3.     UINavigationController *navigationController; //導航欄  
  4.    
  5.     //以下定義了Core Data的三個決定性組建,等后面m文件里面再多介紹  
  6.     NSPersistentStoreCoordinator *persistentStoreCoordinator;  
  7.     NSManagedObjectModel *managedObjectModel;  
  8.     NSManagedObjectContext *managedObjectContext;  
  9. }  
  10.    
  11. @property (nonatomic, retain) IBOutlet UIWindow *window;  
  12. @property (nonatomic, retain) UINavigationController *navigationController;  
  13.    
  14. - (IBAction)saveAction:sender; //這個沒找到作用...根本就沒用到IB  
  15.    
  16. //還記得吧,nonatomic是因為這個程序是單線程  
  17. @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;  
  18. @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;  
  19. @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator  
  20.                               *persistentStoreCoordinator;  
  21. @property (nonatomic, readonly) NSString *applicationDocumentsDirectory;  
  22. //程序文檔目錄是主要為了給NSPersistentStoreCoordinator找個存SQLite文件的地方  
  23. @end  

從上面的我們能看出來,該程序是通過一個根Core Data數據管理來管理整個程序的CoreData數據的,接下來看m文件也會對此作更多的理解。

  1. #import "LocationsAppDelegate.h"  
  2. #import "RootViewController.h" //該程序使用了一個根視圖控制器,所以導入了這個類  
  3. @implementation LocationsAppDelegate  
  4. @synthesize window;  
  5. @synthesize navigationController;  
  6.    
  7. - (void)applicationDidFinishLaunching:(UIApplication *)application {  
  8.     //初始化根視圖控制器,它是一個列表視圖控制器  
  9.     RootViewController *rootViewController = [[RootViewController alloc]  
  10.              initWithStyle:UITableViewStylePlain];  
  11.    
  12.     //通過下面的自定義getter得到CoreData的“被管理對象內容器”  
  13.     NSManagedObjectContext *context = [self managedObjectContext];  
  14.     if (!context) {  
  15.         // 如果getter出錯,在這里來排錯  
  16.     }  
  17.     rootViewController.managedObjectContext = context;  
  18.     //rootViewController有一個本地“被管理對象內容器”,在這里賦值過去  
  19.    
  20.     UINavigationController *aNavigationController = [[UINavigationController alloc]  
  21.              initWithRootViewController:rootViewController];  
  22.     self.navigationController = aNavigationController;  
  23.     //初始化導航欄,根視圖為rootViewController,并指定該導航欄為程序導航欄  
  24.     [window addSubview:[navigationController view]];  
  25.     [window makeKeyAndVisible];  
  26.    
  27.     //由于導航欄retain了根視圖,所以在這里可以release掉它了  
  28.     [rootViewController release];  
  29.     //由于self已經retain了導航欄,所以導航欄可以release  
  30.     [aNavigationController release];  
  31. }  
  32.    
  33. //applicationWillTerminate: 在程序結束前,Core Data會保存任何對其的更改  
  34. - (void)applicationWillTerminate:(UIApplication *)application {  
  35.    
  36.     NSError *error;  
  37.     if (managedObjectContext != nil) {  
  38.         if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {  
  39.             // Handle the error.  
  40.         }  
  41.     }  
  42. }  
  43.    
  44. //在得到點擊事件后,保存更改  
  45. - (IBAction)saveAction:(id)sender {  
  46.    
  47.     NSError *error;  
  48.     if (![[self managedObjectContext] save:&error]) {  
  49.         // Handle error  
  50.     }  
  51. }  
  52.    
  53. //自定義的managedObjectContext的getter, 它其實是真正在使用的時候的被操作對象  
  54. - (NSManagedObjectContext *) managedObjectContext {  
  55.    
  56.     //如果已經有這個對象,就直接返回,否則繼續  
  57.     if (managedObjectContext != nil) {  
  58.         return managedObjectContext;  
  59.     }  
  60.    
  61.     NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];  
  62.     if (coordinator != nil) {  
  63.         managedObjectContext = [[NSManagedObjectContext alloc] init];  
  64.         [managedObjectContext setPersistentStoreCoordinator: coordinator];  
  65.        //這里可以看到,“內容管理器”和“數據一致性存儲器”的關系,  
  66.        //managedObjectContext需要得到這個“數據一致性存儲器”  
  67.     }  
  68.     return managedObjectContext;  
  69. }  
  70.    
  71. //自定義的CoreData數據模板的getter,數據模板其實就是一個描述實體與實體的關系  
  72. //,類似于關系型數據庫的關系描述文件  
  73. - (NSManagedObjectModel *)managedObjectModel {  
  74.    
  75.     if (managedObjectModel != nil) {  
  76.         return managedObjectModel;  
  77.     }  
  78.     managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];  
  79.     //從本地所有xcdatamodel文件得到這個CoreData數據模板  
  80.     return managedObjectModel;  
  81. }  
  82.    
  83. //自定義“數據一致性存儲器” persistentStoreCoordinator的getter  
  84. - (NSPersistentStoreCoordinator *)persistentStoreCoordinator {  
  85.    
  86.     if (persistentStoreCoordinator != nil) {  
  87.         return persistentStoreCoordinator;  
  88.     }  
  89.    
  90.     //定義一個本地地址到NSURL,用來存儲那個SQLite文件  
  91.     NSURL *storeUrl = [NSURL fileURLWithPath:  
  92.             [[self applicationDocumentsDirectory]  
  93.                             stringByAppendingPathComponent: @"Locations.sqlite"]];  
  94.    
  95.     NSError *error;  
  96.     persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]  
  97.             initWithManagedObjectModel: [self managedObjectModel]];  
  98.     //從這里可以看出,其實persistentStoreCoordinator需要的不過是一個  
  99.     //存儲數據的位置,它是負責管理CoreData如何儲存數據的  
  100.     if (![persistentStoreCoordinator  
  101.         addPersistentStoreWithType:NSSQLiteStoreType  
  102.         configuration:nil  
  103.         URL:storeUrl  
  104.         options:nil  
  105.         error:&error]) {  
  106.         // Handle the error.  
  107.     }      
  108.    
  109.     return persistentStoreCoordinator;  
  110. }  
  111.    
  112. //返回該程序的檔案目錄,用來簡單使用  
  113. - (NSString *)applicationDocumentsDirectory {  
  114.    
  115.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  
  116.                             NSUserDomainMask, YES);  
  117.     NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;  
  118.     return basePath;  
  119.     //我原來的帖子中介紹過,方法其實是一模一樣的  
  120. }  
  121.    
  122. - (void)dealloc {  
  123.    
  124.     //釋放內存  
  125.     [managedObjectContext release];  
  126.     [managedObjectModel release];  
  127.     [persistentStoreCoordinator release];  
  128.    
  129.     [navigationController release];  
  130.     [window release];  
  131.     [super dealloc];  
  132. }  
  133. @end  

從上面的程序主代理文件可以看出,CoreData的簡單使用不過是通過三個組建。

NSManagedObjectModel來描述實體與實體的關系,也就是類似于表和表的關系。
NSManagedObjectContext來得到被儲存內容的文件管理器,對數據作直接操作
NSPersistentStoreCoordinator來管理數據的儲存位置,儲存方法(SQLite)

你對Core Data理解更多了么?

 

 

 

  1. @interface LocationsAppDelegate : NSObject  {  
  2.     UIWindow *window;  
  3.     UINavigationController *navigationController; //導航欄  
  4.    
  5.     //以下定義了Core Data的三個決定性組建,等后面m文件里面再多介紹  
  6.     NSPersistentStoreCoordinator *persistentStoreCoordinator;  
  7.     NSManagedObjectModel *managedObjectModel;  
  8.     NSManagedObjectContext *managedObjectContext;  
  9. }  
  10.    
  11. @property (nonatomic, retain) IBOutlet UIWindow *window;  
  12. @property (nonatomic, retain) UINavigationController *navigationController;  
  13.    
  14. - (IBAction)saveAction:sender; //這個沒找到作用...根本就沒用到IB  
  15.    
  16. //還記得吧,nonatomic是因為這個程序是單線程  
  17. @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;  
  18. @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;  
  19. @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator  
  20.                               *persistentStoreCoordinator;  
  21. @property (nonatomic, readonly) NSString *applicationDocumentsDirectory;  
  22. //程序文檔目錄是主要為了給NSPersistentStoreCoordinator找個存SQLite文件的地方  
  23. @end  
From: http://blog.csdn.net/usxue/article/details/5011447
posted on 2011-12-07 08:49 逛奔的蝸牛 閱讀(1008) 評論(0)  編輯 收藏 引用 所屬分類: Cocoa
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线免费观看亚洲| 欧美日韩成人综合天天影院| 免费人成精品欧美精品| 欧美在线免费观看视频| 久久久国产精彩视频美女艺术照福利| 性感少妇一区| 久久久久久尹人网香蕉| 免费久久99精品国产自| 欧美国产日产韩国视频| 亚洲第一中文字幕在线观看| 亚洲人成人77777线观看| 亚洲人成啪啪网站| 在线一区二区三区做爰视频网站| av成人免费在线| 亚洲女人天堂成人av在线| 欧美在线电影| 欧美日本亚洲| 国产精品一区二区三区四区| 韩国欧美国产1区| 亚洲最黄网站| 老牛嫩草一区二区三区日本| 亚洲国产专区校园欧美| 亚洲自拍偷拍麻豆| 免费成人你懂的| 国产乱码精品1区2区3区| 韩日欧美一区二区三区| 在线中文字幕一区| 免费高清在线一区| 亚洲天堂av在线免费| 久久久av水蜜桃| 欧美日韩美女一区二区| 国产综合色在线| 日韩一级精品| 久久婷婷国产综合精品青草| 99精品国产热久久91蜜凸| 久久久夜夜夜| 国产精品一区二区三区免费观看| 91久久在线| 久久成人资源| 一本色道婷婷久久欧美| 老牛嫩草一区二区三区日本| 国产农村妇女精品一区二区| 日韩视频永久免费观看| 美女性感视频久久久| 亚洲一线二线三线久久久| 欧美精品高清视频| 影音欧美亚洲| 久久人体大胆视频| 欧美一区二区三区久久精品茉莉花| 欧美激情一区二区三区在线视频| 国产女主播一区二区三区| 99视频在线观看一区三区| 性欧美8khd高清极品| 亚洲国产成人久久| 久久九九国产精品怡红院| 国产精品爽黄69| 中文亚洲视频在线| 亚洲欧洲精品成人久久奇米网| 欧美在线影院| 国产一区在线视频| 欧美一区亚洲| 欧美专区福利在线| 影音先锋中文字幕一区| 老司机亚洲精品| 欧美在线亚洲在线| 韩国视频理论视频久久| 久久久www| 久久精品麻豆| 91久久夜色精品国产网站| 亚洲国产99| 欧美韩日高清| 在线中文字幕一区| 亚洲五月六月| 国产精自产拍久久久久久| 亚洲午夜精品一区二区三区他趣| 日韩午夜在线| 国产精品视频久久| 久久国产手机看片| 老色鬼精品视频在线观看播放| 亚洲二区精品| 亚洲精品日韩欧美| 国产精品美女视频网站| 久久久久网址| 鲁大师影院一区二区三区| 亚洲激情av| 亚洲精品国产精品国产自| 国产精品成人国产乱一区| 午夜久久影院| 久久久国产成人精品| 亚洲激情在线激情| 一本久久综合亚洲鲁鲁| 国产老肥熟一区二区三区| 久久男人资源视频| 欧美理论片在线观看| 亚洲欧美国产日韩天堂区| 欧美伊人精品成人久久综合97 | 久久综合色天天久久综合图片| 久久成人综合网| 99re8这里有精品热视频免费| 亚洲精品一区二区三区福利 | 伊人久久亚洲影院| 欧美激情视频一区二区三区不卡| 欧美日韩精品一区二区| 欧美在线地址| 欧美a级片网| 午夜精品久久99蜜桃的功能介绍| 欧美亚洲三级| 亚洲免费成人av| 欧美伊人久久| 一区二区三区视频在线看| 欧美在线视频不卡| 亚洲网站在线| 亚洲欧洲午夜| 久久福利资源站| 亚洲综合二区| 欧美成人有码| 美女网站在线免费欧美精品| 国产精品免费看| 亚洲精选久久| 亚洲国产高潮在线观看| 亚洲欧美日韩第一区| 一本色道久久综合亚洲精品小说 | 欧美女激情福利| 久久经典综合| 国产免费观看久久黄| 日韩一级二级三级| 日韩一级大片在线| 免费在线看一区| 另类亚洲自拍| 国内欧美视频一区二区| 亚洲网站视频福利| 在线视频精品| 欧美日韩国产首页| 亚洲人成网站在线观看播放| 亚洲电影免费观看高清完整版| 亚洲欧美日韩一区二区在线| 亚洲一区二区三区免费在线观看 | 欧美精品在线看| 欧美a级一区| 激情成人亚洲| 久久国产精品久久久| 久久久久国产精品一区三寸| 国产精品资源在线观看| 亚洲午夜一区二区| 午夜精品999| 国产精品视频第一区| 亚洲一区国产视频| 久久久久久一区| 在线成人国产| 免费在线观看成人av| 亚洲人体影院| 亚洲一区二区免费| 国产乱码精品| 久久久在线视频| 亚洲国产欧美另类丝袜| 一区二区不卡在线视频 午夜欧美不卡'| 欧美成人小视频| 日韩午夜剧场| 久久精品国产亚洲一区二区三区| 国语自产精品视频在线看抢先版结局 | 国产一区二区你懂的| 久久精品99| 亚洲成人在线网| 妖精成人www高清在线观看| 国产精品成人一区二区网站软件 | 亚洲国产精品ⅴa在线观看| 亚洲电影免费观看高清完整版| 蜜臀av在线播放一区二区三区| 91久久国产综合久久91精品网站| 亚洲人www| 99国内精品| 欧美自拍偷拍午夜视频| 欧美a级大片| 中文av字幕一区| 狠狠色丁香久久婷婷综合_中| 欧美www在线| 亚洲在线视频一区| 农夫在线精品视频免费观看| 一区二区三区精品国产| 国产日韩一区| 欧美日本在线| 欧美一区二区性| 日韩一级黄色片| 老司机精品视频一区二区三区| 9l视频自拍蝌蚪9l视频成人| 国产在线精品一区二区夜色| 欧美区在线播放| 久久午夜精品| 亚洲综合精品一区二区| 欧美激情二区三区| 久久精品成人| 亚洲永久字幕| 亚洲精品乱码视频| 国产亚洲人成网站在线观看| 欧美日韩在线播| 免费看的黄色欧美网站| 亚洲欧美日韩在线| 一本色道久久综合亚洲91| 亚洲高清123| 欧美大尺度在线|