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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
@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>
            欧美在线你懂的| 欧美 日韩 国产 一区| 亚洲在线电影| 亚洲电影专区| 国产亚洲精品美女| 国产精品mv在线观看| 欧美区视频在线观看| 欧美va亚洲va国产综合| 久久在精品线影院精品国产| 久久av一区二区三区漫画| 亚洲欧美激情诱惑| 亚洲综合精品一区二区| 国产精品99久久久久久有的能看| 亚洲国语精品自产拍在线观看| 久久精品欧美日韩精品| 久久久久久久高潮| 亚洲午夜精品久久| 国产一区二区三区日韩欧美| 欧美日韩成人在线播放| 欧美在线观看日本一区| 亚洲欧美另类中文字幕| 香港成人在线视频| 久久久亚洲高清| 久久综合久久综合久久综合| 蜜桃av久久久亚洲精品| 欧美成人按摩| 欧美午夜宅男影院| 国产视频综合在线| 伊人成年综合电影网| 91久久久久久国产精品| 一本色道久久综合狠狠躁篇的优点| 夜夜爽www精品| 午夜精品久久久久久久男人的天堂| 欧美一区2区视频在线观看| 久久精品亚洲热| 亚洲高清一二三区| 亚洲国产精品成人va在线观看| 欧美韩日高清| 久久久久免费| 国产精品欧美精品| 亚洲欧美日韩一区二区三区在线观看 | 老色批av在线精品| 欧美国产综合| 亚洲综合视频网| 久久米奇亚洲| 国产精品大全| 亚洲精品小视频| 久久精品30| 日韩一区二区精品| 久久先锋影音av| 国产精品美女久久久久久2018 | 亚洲免费电影在线| 久久久久久久综合日本| 亚洲欧洲精品天堂一级| 午夜精品久久久久久久久久久久| 欧美xart系列在线观看| 国产精品入口麻豆原神| 亚洲破处大片| 久久久久久久久久码影片| 亚洲精品一区二区三区99| 亚洲视频一二区| 午夜精彩国产免费不卡不顿大片| 嫩草成人www欧美| 国语对白精品一区二区| 亚洲欧美日韩国产精品| 亚洲日本中文字幕| 久热这里只精品99re8久| 国产日韩一区二区三区| 亚洲欧美福利一区二区| 亚洲日本电影| 欧美成人一区二区三区在线观看 | 久久综合精品国产一区二区三区| 一本综合精品| 久久久久国产精品一区| 国产亚洲欧美一区二区| 欧美一区二区三区免费视| 亚洲欧洲一区二区三区在线观看| 久久在线精品| 亚洲国产高清视频| 美女露胸一区二区三区| 欧美一级久久久| 国产日韩精品一区二区浪潮av| 亚洲一区二区三区精品动漫| 亚洲视频精品在线| 亚洲午夜在线视频| 欧美77777| 亚洲第一区在线观看| 久久天天狠狠| 久久精品av麻豆的观看方式| 国产精品一区亚洲| 午夜精品在线看| 亚洲私人影院| 国产精品久久久一区麻豆最新章节 | 久久精品成人欧美大片古装| 亚洲欧美成人在线| 国产日韩欧美日韩大片| 久久精品一区| 久久久午夜视频| 最新国产成人av网站网址麻豆| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久午夜精品| 日韩一级免费观看| 久久精品国产99国产精品| 性欧美办公室18xxxxhd| 欧美xxxx在线观看| 亚洲啪啪91| 久久精品国产精品| 亚洲国产精品久久人人爱蜜臀 | 欧美88av| 欧美日韩国产在线| 午夜精品一区二区三区在线| 久久精品国产999大香线蕉| 亚洲国产一区二区在线| 99在线精品观看| 狠狠干狠狠久久| 亚洲黄色一区二区三区| 国产精品久线观看视频| 欧美国产一区二区三区激情无套| 亚洲九九九在线观看| 亚洲午夜久久久| 激情五月综合色婷婷一区二区| 日韩视频在线一区二区| 亚洲欧美视频在线观看| 亚洲丶国产丶欧美一区二区三区| 91久久久久久国产精品| 国产视频一区免费看| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美在线网站| 国产精品99久久久久久久vr| 欧美日韩一区综合| 久久久久青草大香线综合精品| 免费成人高清视频| 欧美亚洲免费电影| 激情视频亚洲| 欧美三级电影大全| 午夜精彩视频在线观看不卡| 美女999久久久精品视频| 欧美一区二区在线免费播放| 欧美色123| 亚洲精品中文字| 99国产精品国产精品久久| 久久夜色精品国产欧美乱极品| 欧美一区免费| 国产伦精品一区二区三区视频黑人 | 欧美大片免费| 在线欧美不卡| 老牛嫩草一区二区三区日本| 麻豆精品视频在线观看| 在线精品福利| 欧美国产精品人人做人人爱| 亚洲日本激情| 亚洲一级片在线观看| 国产精品美女主播在线观看纯欲| 午夜精品免费在线| 免费日韩av电影| 亚洲精品欧美激情| 欧美午夜不卡影院在线观看完整版免费 | 亚洲国产91| 这里只有精品视频| 国产精品夜夜夜一区二区三区尤| 亚洲欧美国产三级| 农夫在线精品视频免费观看| 亚洲精品中文字幕在线| 国产精品久久国产精品99gif | 亚洲精品在线三区| 欧美一区网站| 亚洲国产电影| 国产精品国产三级国产aⅴ9色| 欧美专区18| 99re这里只有精品6| 久久精品国产免费观看| 亚洲激情欧美激情| 国产欧美日韩综合精品二区| 久久乐国产精品| 一区二区三区高清在线 | 欧美国产精品久久| 亚洲欧美日韩国产成人精品影院| 激情成人中文字幕| 国产精品成人一区二区三区吃奶 | 久久亚洲欧美| 欧美视频一区二区三区在线观看 | 久久一区二区三区av| 日韩视频免费看| 狼人天天伊人久久| 亚洲宅男天堂在线观看无病毒| 在线不卡欧美| 国产精品亚洲美女av网站| 欧美大秀在线观看| 久久久久久伊人| 香蕉亚洲视频| 亚洲视频一起| 亚洲久久一区二区| 亚洲成色www8888| 久久人人爽人人爽爽久久| 亚洲欧美日韩精品久久奇米色影视| 在线精品一区| 狠狠色狠狠色综合人人| 国产欧美午夜| 国产欧美日韩三区| 国产欧美日韩麻豆91|