Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëÀí½âCore Data
 
×÷ÕߣºäÞäÞ69 À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-03-18
  2707  次浏览      27
 

Core Data ÊÇʲô£¿

´ó¸Å°ËÄêǰ£¬2005ÄêµÄËÄÔ·ݣ¬Apple ·¢²¼ÁË OS X 10.4£¬ÕýÊÇÔÚÕâ¸ö°æ±¾ÖÐ Core Data ¿ò¼Ü·¢²¼ÁË¡£ÄǸöʱºò YouTube Ò²¸Õ·¢²¼¡£

Core Data ÊÇÒ»¸öÄ£ÐͲãµÄ¼¼Êõ¡£Core Data °ïÖúÄ㽨Á¢´ú±í³ÌÐò״̬µÄÄ£ÐͲ㡣Core Data Ò²ÊÇÒ»Öֳ־û¯¼¼Êõ£¬ËüÄܽ«Ä£ÐͶÔÏóµÄ״̬³Ö¾Ã»¯µ½´ÅÅÌ£¬µ«Ëü×îÖØÒªµÄÌØµãÊÇ£ºCore Data ²»½öÊÇÒ»¸ö¼ÓÔØ¡¢±£´æÊý¾ÝµÄ¿ò¼Ü£¬Ëü»¹ÄܺÍÄÚ´æÖеÄÊý¾ÝºÜºÃµÄ¹²Ê¡£

Èç¹ûÄãÖ®Ç°Ôø¾­½Ó´¥¹ý Object-relational maping (O/RM)£ºCore Data²»ÊÇÒ»¸ö O/RM£¬µ«Ëü±È O/RM ÄÜ×öµÄ¸ü¶à¡£Èç¹ûÄãÖ®Ç°Ôø¾­½Ó´¥¹ý SQL wrappers£ºCore Data ²»ÊÇÒ»¸ö SQL wrapper¡£ËüĬÈÏʹÓà SQL£¬µ«ÊÇ£¬ËüÊÇÒ»ÖÖ¸ü¸ß¼¶µÄ³éÏó¸ÅÄî¡£Èç¹ûÄãÐèÒªµÄÊÇÒ»¸ö O/RM »òÕß SQL wrapper£¬ÄÇô Core Data ²¢²»ÊʺÏÄã¡£

¶ÔÏóͼ¹ÜÀí£¨object graph management£©ÊÇ Core Data ×îÇ¿´óµÄ¹¦ÄÜÖ®Ò»¡£ÎªÁ˸üºÃÀûÓà Core Data£¬ÕâÊÇÄãÐèÒªÀí½âµÄÒ»¿éÄÚÈÝ¡£

»¹ÓÐÒ»µãҪעÒ⣺Core Data ÊÇÍêÈ«¶ÀÁ¢ÓÚÈκΠUI ²ã¼¶µÄ¿ò¼Ü¡£ËüÊÇ×÷ΪģÐͲã¿ò¼Ü±»Éè¼Æ³öÀ´µÄ¡£ÔÚ OS X ÖУ¬ÉõÖÁÔÚһЩºǫ́פÁô³ÌÐòÖУ¬Core Data ¶¼Æð×ŷdz£ÖØÒªµÄÒâÒå¡£

¶ÑÕ»

Core Data ÓÐÏ൱¶à¿ÉÓõÄ×é¼þ¡£ÕâÊÇÒ»¸ö·Ç³£Áé»îµÄ¼¼Êõ¡£ÔÚ´ó¶àÊýµÄʹÓÃÇé¿öÏ£¬ÉèÖö¼Ï൱¼òµ¥¡£

µ±ËùÓеÄ×é¼þ¶¼À¦°óµ½Ò»ÆðµÄʱºò£¬ÎÒÃǰÑËü³Æ×÷ Core Data ¶ÑÕ»£¬Õâ¸ö¶ÑÕ»ÓÐÁ½¸öÖ÷Òª²¿·Ö¡£Ò»²¿·ÖÊǹØÓÚ¶ÔÏóͼ¹ÜÀí£¬ÕâÕýÊÇÄãÐèÒªºÜºÃÕÆÎÕµÄÄÇÒ»²¿·Ö£¬²¢ÇÒÖªµÀÔõôʹÓᣵڶþ²¿·ÖÊǹØÓڳ־û¯£¬±ÈÈ磬±£´æÄãÄ£ÐͶÔÏóµÄ״̬£¬È»ºóÔÙ»Ö¸´Ä£ÐͶÔÏóµÄ״̬¡£

ÔÚÁ½¸ö²¿·ÖÖ®¼ä£¬¼´¶ÑÕ»Öм䣬Êdz־û¯´æ´¢Ð­µ÷Æ÷£¨persistent store coordinator£©£¬Ò²±»³ÆÎªÖмäÉó²éÕß¡£Ëü½«¶ÔÏóͼ¹ÜÀí²¿·ÖºÍ³Ö¾Ã»¯²¿·ÖÀ¦°óÔÚÒ»Æð£¬µ±ËüÃÇÁ½ÕßÖеÄÈκÎÒ»²¿·ÖÐèÒªºÍÁíÒ»²¿·Ö½»Á÷ʱ£¬Õâ±ãÐèÒª³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷À´µ÷½ÚÁË¡£

¶ÔÏóͼ¹ÜÀíÊÇÄã³ÌÐòÄ£ÐͲãµÄÂß¼­´æÔڵĵط½¡£Ä£ÐͲãµÄ¶ÔÏó´æÔÚÓÚÒ»¸ö context ÄÚ¡£ÔÚ´ó¶àÊýµÄÉèÖÃÖУ¬´æÔÚÒ»¸ö context £¬²¢ÇÒËùÓеĶÔÏó´æÔÚÓÚÄǸö context ÖС£Core Data Ö§³Ö¶à¸ö contexts£¬²»¹ý¶ÔÓÚ¸ü¸ß¼¶µÄʹÓÃÇé¿ö²ÅÓá£×¢Òâÿ¸ö context ºÍÆäËû context ¶¼ÊÇÍêÈ«¶ÀÁ¢µÄ£¬Ò»»á¶ùÎÒÃǽ«»á̸µ½¡£ÐèÒª¼ÇסµÄÊÇ£¬¶ÔÏóºÍËüÃÇµÄ context ÊÇÏà¹ØÁªµÄ¡£Ã¿¸ö±»¹ÜÀíµÄ¶ÔÏó¶¼ÖªµÀ×Ô¼ºÊôÓÚÄĸö context£¬²¢ÇÒÿ¸ö context ¶¼ÖªµÀ×Ô¼º¹ÜÀí×ÅÄÄЩ¶ÔÏó¡£

¶ÑÕ»µÄÁíÒ»²¿·Ö¾ÍÊdz־ÃÁË£¬¼´ Core Data ´ÓÎļþϵͳÖжÁ»òдÊý¾Ý¡£Ã¿¸ö³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷£¨persistent store coordinator£©¶¼ÓÐÒ»¸öÊôÓÚ×Ô¼ºµÄ³Ö¾Ã»¯´æ´¢£¨persistent store£©£¬²¢ÇÒÕâ¸ö store ÔÚÎļþϵͳÖÐÓë SQLite Êý¾Ý¿â½»»¥¡£ÎªÁËÖ§³Ö¸ü¸ß¼¶µÄÉèÖã¬Core Data ¿ÉÒÔ½«¶à¸ö stores ¸½ÊôÓÚͬһ¸ö³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷£¬²¢ÇÒ³ýÁË´æ´¢ SQL ¸ñʽÍ⣬»¹ÓÐºÜ¶à´æ´¢ÀàÐͿɹ©Ñ¡Ôñ¡£

×î³£¼ûµÄ½â¾ö·½°¸ÈçÏÂͼËùʾ£º

×é¼þÈçºÎÒ»Æð¹¤×÷

ÈÃÎÒÃÇ¿ìËٵĿ´Ò»¸öÀý×Ó£¬¿´¿´×é¼þÊÇÈçºÎЭͬ¹¤×÷µÄ¡£ÔÚÎÒÃǵÄÎÄÕ¡¶Ò»¸öÍê³ÉµÄ Core Data Ó¦Óá·ÖУ¬ÕýºÃÓÐÒ»¸öʵÌ壬¼´Ò»ÖÖ¶ÔÏó£ºÎÒÃÇÓÐÒ»¸ö Item ʵÌå¶ÔÓ¦Ò»¸ö title¡£Ã¿Ò»¸ö item ¿ÉÒÔÓµÓÐ×Ó items£¬Òò´Ë£¬ÎÒÃÇÓÐÒ»¸ö¸¸×Ó¹ØÏµ¡£

ÕâÊÇÎÒÃǵÄÊý¾ÝÄ£ÐÍ¡£ÕýÈçÎÒÃÇÔÚ¡¶Êý¾ÝÄ£ÐͺÍÄ£ÐͶÔÏó¡·Ò»ÎÄÖÐÌáµ½µÄÒ»Ñù£¬ÔÚ Core Data ÖÐÓÐÒ»ÖÖÌØ±ðµÄ¶ÔÏ󡪡ªÊµÌå¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇÖ»ÓÐÒ»¸öʵÌ壺Item ʵÌ塣ͬÑùµÄ£¬ÎÒÃÇÓÐÒ»¸ö NSManagedObject µÄ×ÓÀ࣬½Ð×ö Item¡£Õâ¸ö Item ʵÌåÓ³Éäµ½ Item ÀàÉÏ¡£ÔÚÊý¾ÝÄ£Ð͵ÄÎÄÕÂÖлáÏêϸµÄ̸µ½Õâ¸ö¡£

ÎÒÃǵijÌÐò½öÓÐÒ»¸ö¸ù Item¡£ÕⲢûÓÐÊ²Ã´ÆæÃîµÄµØ·½¡£ËüÊÇÒ»¸öÎÒÃÇÓÃÀ´ÏÔʾµ×²ã item µÈ¼¶µÄ item¡£ËüÊÇÒ»¸öÎÒÃÇÓÀÔ¶²»»áΪÆäÉèÖø¸ÀàµÄ Item¡£

µ±³ÌÐòÔËÐÐʱ£¬ÎÒÃÇÏñÉÏÃæÍ¼Æ¬Ãè»æµÄÒ»ÑùÉèÖÃÎÒÃǵĶÑÕ»£¬Ò»¸ö´æ´¢£¬Ò»¸ö managed object context£¬ÒÔ¼°Ò»¸ö³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷À´½«ËüÃǹØÁªÆðÀ´¡£

ÔÚµÚÒ»´ÎÔËÐÐʱ£¬ÎÒÃDz¢Ã»ÓÐÈκΠitems¡£ÎÒÃÇÐèÒª×öµÄµÚÒ»¼þʾÍÊÇ´´½¨¸ù item¡£Äãͨ¹ý½«ËüÃDzåÈë context À´Ôö¼Ó¹ÜÀí¶ÔÏó¡£

´´½¨¶ÔÏó

²åÈë¶ÔÏóµÄ·½·¨ËƺõºÜ±¿ÖØ£¬ÎÒÃÇͨ¹ý NSEntityDescription µÄ·½·¨À´²åÈ룺

+ (id)insertNewObjectForEntityForName:(NSString *)entityName 
inManagedObjectContext:(NSManagedObjectContext *)context

ÎÒÃǽ¨ÒéÄãÔö¼ÓÁ½¸ö·½±ãµÄ·½·¨µ½ÄãµÄÄ£ÐÍÀàÖУº

+ (NSString *)entityName
{
   return @¡°Item¡±;
}

+ (instancetype)insertNewObjectInManagedObjectContext:(NSManagedObjectContext *)moc;
{
   return [NSEntityDescription insertNewObjectForEntityForName:[self entityName] 
                                        inManagedObjectContext:moc];
}

ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÏñÕâÑù²åÈëÎÒÃǵĸù¶ÔÏóÁË£º

Item *rootItem = [Item insertNewObjectInManagedObjectContext:managedObjectContext];

ÏÖÔÚ£¬ÔÚÎÒÃÇµÄ managed object context ÖÐÓÐÒ»¸öΨһµÄ item¡£Context ÖªµÀÕâÊÇÒ»¸öвåÈë½øÀ´ÐèÒª±»¹ÜÀíµÄ¶ÔÏ󣬲¢ÇÒ±»¹ÜÀíµÄ¶ÔÏó rootItem ÖªµÀÕâ¸ö Context£¨ËüÓÐÒ»¸ö -managedObjectContext ·½·¨£©¡£

±£´æ¸Ä±ä

ËäÈ»ÎÒÃÇÒѾ­Ì¸µ½ÕâÁË£¬¿ÉÊÇÎÒÃÇ»¹ÊÇûÓнӴ¥µ½³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷»ò³Ö¾Ã»¯´æ´¢¡£ÐµÄÄ£ÐͶÔÏó¡ªrootItem£¬½ö½öÔÚÄÚ´æÖС£Èç¹ûÎÒÃÇÏëÒª±£´æÄ£ÐͶÔÏóµÄ״̬£¨ÔÚÕâÖÖÇé¿öÏÂÖ»ÊÇÒ»¸ö¶ÔÏ󣩣¬ÎÒÃÇÐèÒª±£´æ context£º

NSError *error = nil;
if (! [managedObjectContext save:&error]) {
// °¡£¬Å¶. ÓдíÎó·¢ÉúÁË :(
}

Õâ¸öʱºò£¬ºÜ¶àÊÂÇ齫Ҫ·¢Éú¡£Ê×ÏÈÊÇ managed object context ¼ÆËã³ö¸Ä±äµÄÄÚÈÝ¡£ÕâÊÇ context µÄÖ°Ôð£¬×·×Ù³öÈκÎÄãÔÚ context ¹ÜÀí¶ÔÏóÖÐ×ö³öµÄ¸Ä±ä¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬ÎÒÃǵ½ÏÖÔÚ×ö³öµÄΨһ¸Ä±ä¾ÍÊDzåÈëÒ»¸ö¶ÔÏ󣬼´ÎÒÃÇµÄ rootItem¡£

Managed object context ½«ÕâЩ¸Ä±ä´«¸ø³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷£¬ÈÃËü½«ÕâЩ¸Ä±ä´«¸ø store¡£³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷»áЭµ÷ store£¨ÔÚÎÒÃǵÄÀý×ÓÖУ¬store ÊÇÒ»¸ö SQL Êý¾Ý¿â£©À´½«ÎÒÃDzåÈëµÄ¶ÔÏóдÈëµ½´ÅÅÌÉ쵀 SQL Êý¾Ý¿â¡£NSPersistentStore Àà¹ÜÀí×ÅºÍ SQLite µÄʵ¼Ê½»»¥£¬²¢ÇÒ²úÉúÐèÒª±»Ö´ÐÐµÄ SQL ´úÂë¡£³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷µÄ½ÇÉ«¾ÍÊǼò»¯µ÷Õû store ºÍ context Ö®¼äµÄ½»»¥¹ý³Ì¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬Õâ¸ö½ÇÉ«Ï൱¼òµ¥£¬µ«ÊÇ£¬¸´ÔÓµÄÉèÖÿÉÒÔÓжà¸ö stores ºÍ¶à¸ö contexts¡£

¸üйØÏµ

Core Data µÄÓÅÊÆÔÚÓÚ¹ÜÀí¹ØÏµ¡£ÈÃÎÒÃÇ×ÅÑÛÓÚ¼òµ¥µÄÇé¿ö£ºÔö¼ÓÎÒÃǵڶþ¸ö item£¬²¢ÇÒʹËü³ÉΪ rootItem µÄ×Ó item£º

Item *item = [Item insertNewObjectInManagedObjectContext:managedObjectContext];
item.parent = rootItem;
item.title = @"foo";

ºÃÁË¡£Í¬ÑùµÄ£¬ÕâЩ¸Ä±ä½ö½ö´æÔÚÓÚ managed object context ÖС£Ò»µ©ÎÒÃDZ£´æÁË context£¬managed object context ½«»á֪ͨ³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷£¬ÏñÔö¼ÓµÚÒ»¸ö¶ÔÏóÒ»ÑùÔö¼Óд´½¨µÄ¶ÔÏóµ½Êý¾Ý¿âÎļþÖС£µ«ÕâÒ²½«»á¸üеڶþ¸ö item ÓëµÚÒ»¸ö item Ö®¼äµÄ¹ØÏµ¡£¼Çס Item ʵÌåÊÇÈçºÎÓÐÒ»¸ö¸¸×Ó¹ØÏµµÄ¡£ËüÃÇÖ®¼äÓÐÏà·´µÄ¹ØÏµ¡£ÒòΪÎÒÃÇÉèÖõÚÒ»¸ö item ΪµÚ¶þ¸ö item µÄ¸¸Ç×£¨parent£©Ê±£¬µÚ¶þ¸ö item ½«»á±ä³ÉµÚÒ»¸ö item µÄ¶ù×Ó£¨child£©¡£Managed object context ×·×ÙÕâЩ¹ØÏµ£¬³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷ºÍ store ±£´æÕâЩ¹ØÏµµ½´ÅÅÌ¡£

»ñÈ¡¶ÔÏó

ÎÒÃÇÒѾ­Ê¹ÓÃÎÒÃǵijÌÐòÒ»»á¶ùÁË£¬²¢ÇÒÒѾ­Îª rootItem Ôö¼ÓÁËһЩ×Ó items£¬ÉõÖÁÔö¼Ó×Ó items µ½×Ó items¡£È»¶ø£¬ÎÒÃÇÔÙ´ÎÆô¶¯ÎÒÃǵijÌÐò¡£Core Data ÒѾ­½«ÕâЩ items Ö®¼äµÄ¹ØÏµ±£´æµ½ÁËÊý¾Ý¿âÎļþ¡£¶ÔÏóͼÊdz־û¯µÄ¡£ÎÒÃÇÏÖÔÚÐèҪȡ³ö¸ù item£¬ËùÒÔÎÒÃÇ¿ÉÒÔÏÔʾµ×²ã items µÄÁÐ±í¡£ÓÐÁ½ÖÖ·½·¨¿ÉÒÔ´ïµ½Õâ¸öЧ¹û¡£ÎÒÃÇÏÈ¿´¼òµ¥µãµÄ·½·¨¡£

µ± rootItem ¶ÔÏó´´½¨²¢±£´æÖ®ºóÎÒÃÇ¿ÉÒÔÏòËüÇëÇóËüµÄ NSManagedObjectID¡£ÕâÊÇÒ»¸ö²»Í¸Ã÷µÄ¶ÔÏ󣬿ÉÒÔΨһ´ú±í rootItem¡£ÎÒÃÇ¿ÉÒÔ±£´æÕâ¸ö¶ÔÏóµ½ NSUSerDefaults£¬ÏñÕâÑù£º

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setURL:rootItem.objectID.URIRepresentation forKey:@"rootItem"];

ÏÖÔÚ£¬µ±³ÌÐòÖØÐÂÔËÐÐʱ£¬ÎÒÃÇ¿ÉÒÔÏñÕâÑù·µ»ØµÃµ½Õâ¸ö¶ÔÏó£º

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSURL *uri = [defaults URLForKey:@"rootItem"];
NSManagedObjectID *moid = [managedObjectContext.persistentStoreCoordinator managedObjectIDForURIRepresentation:uri];
NSError *error = nil;
Item *rootItem = (id) [managedObjectContext existingObjectWithID:moid error:&error];

ºÜÃ÷ÏÔ£¬ÔÚÒ»¸öÕæÕýµÄ³ÌÐòÖУ¬ÎÒÃÇÐèÒª¼ì²é NSUserDefaults ÊÇ·ñÕæÕý·µ»ØÒ»¸öÓÐЧֵ¡£

¸Õ²ÅµÄ²Ù×÷ÊÇ managed object context ÒªÇó³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷´ÓÊý¾Ý¿âÈ¡µÃÖ¸¶¨µÄ¶ÔÏ󡣸ù¶ÔÏóÏÖÔÚ±»»Ö¸´µ½ context ÖС£È»¶ø£¬ÆäËûËùÓÐµÄ items ÈÔÈ»²»ÔÚÄÚ´æÖС£

rootItem ÓÐÒ»¸ö×Ó¹ØÏµ½Ð×ö children¡£µ«ÏÖÔÚÄǶù»¹Ã»ÓÐʲô¡£ÎÒÃÇÏëÒªÏÔʾ rootItem µÄ×Ó item£¬Òò´ËÎÒÃÇÐèÒªµ÷Óãº

NSOrderedSet *children = rootItem.children;

ÏÖÔÚ·¢ÉúµÄÊÇ£¬context ±ê×¢Õâ¸ö rootItem µÄ×Ó item ΪËùνµÄ¹ÊÕÏ¡£Core Data ÒѾ­±ê×¢Õâ¸ö¹ØÏµÎªÈÔÐèÒª±»½â¾ö¡£¼ÈÈ»ÎÒÃÇÒѾ­ÔÚÕâ¸öʱºò·ÃÎÊÁËËü£¬context ½«»á×Ô¶¯ÅäºÏ³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷À´½«ÕâЩ×Ó items ÔØÈëµ½ context ÖС£

ÕâÌýÆðÀ´¿ÉÄܷdz£²»ÖØÒª£¬µ«ÊÇÔÚÕâ¸öʱºòÕæÕý·¢ÉúÁ˺ܶàÊÂÇé¡£Èç¹ûÈκÎ×Ó¶ÔÏóżȻ·¢ÉúÔÚÄÚ´æÖУ¬Core Data ±£Ö¤»á¸´ÓÃÄÇЩ¶ÔÏó¡£ÕâÊÇCore Data ¶ÀÒ»ÎÞ¶þµÄ¹¦ÄÜ¡£ÔÚ context ÄÚ£¬´Ó²»»á´æÔÚµÚ¶þ¸öÏàͬµÄµ¥Ò»¶ÔÏóÀ´´ú±íÒ»¸ö¸ø¶¨µÄ item¡£

Æä´Î£¬³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷ÓÐËü×Ô¼ºÄÚ²¿¶ÔÏóÖµµÄ»º´æ¡£Èç¹û context ÐèÒªÒ»¸öÖ¸¶¨µÄ¶ÔÏ󣨱ÈÈçÒ»¸ö×Ó item£©£¬²¢Çҳ־û¯´æ´¢Ð­µ÷Æ÷ÔÚ»º´æÖÐÒѾ­ÓÐÐèÒªµÄÖµ£¬ÄÇô£¬¶ÔÏ󣨼´Õâ¸ö item£©¿ÉÒÔ²»Í¨¹ý store ¶ø±»Ö±½Ó¼Óµ½ context¡£ÕâºÜÖØÒª£¬ÒòΪ·ÃÎÊ store ¾ÍÒâζ×ÅÖ´ÐÐ SQL ´úÂ룬Õâ±ÈʹÓÃÄÚ´æÖдæÔÚµÄÖµÒªÂýºÜ¶à¡£

Ëæ×ÅÎÒÃDZéÀú item µÄ×Ó item£¬ÒÔ¼°×Ó item µÄ×Ó item£¬ÎÒÃÇÂýÂýµØ°ÑÕû¸ö¶ÔÏóͼÒýÓõ½ÁË managed object context¡£¶øÕâЩ¶ÔÏó¶¼ÔÚÄÚ´æÖÐÖ®ºó£¬²Ù×÷¶ÔÏóÒÔ¼°´«µÝ¹ØÏµ¾Í»á±äµÃ·Ç³£¿ì£¬ÒòΪÎÒÃÇÖ»ÊÇÔÚ managed object context Àï²Ù×÷¡£ÎÒÃǸú±¾²»ÐèÒª·ÃÎʳ־û¯´æ´¢Ð­µ÷Æ÷¡£ÔÚÎÒÃÇµÄ Item ¶ÔÏóÉÏ·ÃÎÊ title£¬parent ºÍ children ÊǷdz£¿ì¶øÇÒ¸ßЧµÄ¡£

ÓÉÓÚËü»áÓ°ÏìÐÔÄÜ£¬ËùÒÔÁ˽âÊý¾ÝÔÚÕâЩÇé¿öÏÂÔõôȡ³öÀ´ÊǷdz£ÖØÒªµÄ¡£ÔÚÎÒÃÇÌØ¶¨µÄÇé¿öÏ£¬ÓÉÓÚÎÒÃDz¢Ã»½Ó´¥µ½Ì«¶àµÄÊý¾Ý£¬ËùÒÔÕâ²¢²»Ëãʲô£¬µ«ÊÇÒ»µ©ÄãÐèÒª´¦ÀíµÄÊý¾ÝÁ¿½Ï´ó£¬Ä㽫ÐèÒªÁ˽âÔÚ±³ºó·¢ÉúÁËʲô¡£

µ±Äã±éÀúÒ»¸ö¹ØÏµÊ±£¨±ÈÈçÔÚÎÒÃÇÀý×ÓÖÐµÄ parent »ò children ¹ØÏµ£©ÏÂÃæÈýÖÖÇé¿ö½«ÓÐÒ»ÖֻᷢÉú£º£¨1£©¶ÔÏóÒѾ­ÔÚ context ÖУ¬ÕâÖÖ²Ù×÷»ù±¾ÉÏÊÇûÓÐÈκδú¼ÛµÄ¡££¨2£©¶ÔÏó²»ÔÚ context ÖУ¬µ«ÊÇÒòΪÄã×î½ü´Ó store ÖÐÈ¡³ö¹ý¶ÔÏó£¬ËùÒԳ־û¯´æ´¢Ð­µ÷Æ÷»º´æÁ˶ÔÏóµÄÖµ¡£Õâ¸ö²Ù×÷»¹ËãÁ®¼Û£¨µ«ÊÇ£¬Ò»Ð©²Ù×÷»á±»Ëø×¡£©¡£²Ù×÷ºÄ·Ñ×î°º¹óµÄÇé¿öÊÇ£¨3£©£¬µ± context ºÍ³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷¶¼ÊǵÚÒ»´Î·ÃÎÊÕâ¸ö¶ÔÏó£¬ÕâÖÖÇé¿ö±ØÐëͨ¹ý store ´Ó SQLite Êý¾Ý¿âÈ¡»Ø¡£×îºóÒ»ÖÖÇé¿ö±È£¨1£©ºÍ£¨2£©ÐèÒª¸¶³ö¸ü¶à´ú¼Û¡£

Èç¹ûÄãÖªµÀÄã±ØÐë´Ó store È¡»Ø¶ÔÏ󣨱ÈÈçÄãÒѾ­ÖªµÀûÓÐÕâЩ¶ÔÏ󣩣¬µ±ÄãÏÞÖÆÒ»´ÎÈ¡»Ø¶àÉÙ¸ö¶ÔÏóʱ£¬½«»á²úÉúºÜ´óµÄ²»Í¬¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬ÎÒÃÇÏ£ÍûÒ»´ÎÐÔÈ¡³öËùÓÐ×Ó items£¬¶ø²»ÊÇÒ»¸ö½ÓÒ»¸ö¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÒ»¸öÌØ±ðµÄ¼¼ÇÉ NSFetchRequest¡£µ«ÊÇÎÒÃÇҪעÒ⣬µ±ÎÒÃÇÐèÒª×öÕâ¸ö²Ù×÷ʱ£¬ÎÒÃÇÖ»ÐèÒªÖ´ÐÐÒ»´ÎÈ¡³öÇëÇó£¬ÒòΪһ´ÎÈ¡³öÇëÇ󽫻áÔì³É£¨3£©·¢Éú£»Õ⽫×ÜÊǶÀÕ¼ SQLite Êý¾Ý¿âµÄ·ÃÎÊ¡£Òò´Ë£¬µ±ÐèÒªÏÔÖøÌáÉýÐÔÄÜʱ£¬¼ì²é¶ÔÏóÊÇ·ñÒѾ­´æÔÚ½«±äµÃ·Ç³£ÓÐÒâÒå¡£Äã¿ÉÒÔʹÓÃ-[NSManagedObjectContext objectRegisteredForID:]À´¼ì²âÒ»¸ö¶ÔÏóÊÇ·ñÒѾ­´æÔÚ¡£

¸Ä±ä¶ÔÏóµÄÖµ

ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ˵£¬ÎÒÃÇÒѾ­¸Ä±äÎÒÃÇÒ»¸ö Item ¶ÔÏóµÄ title£º

item.title = @"New title";

µ±ÎÒÃÇÕâÑù×öʱ£¬item µÄ title ¸Ä±äÁË¡£´ËÍ⣬managed object context »á±ê×¢Õâ¸ö¶ÔÏó£¨item£©ÒѾ­±»¸Ä±ä£¬ÕâÑùµ±ÎÒÃÇÔÚ context Öе÷Óà -save: ʱ£¬Õâ¸ö¶ÔÏ󽫻áͨ¹ý³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷ºÍ¸½ÊôµÄ store ±£´æÆðÀ´¡£context×î¹Ø¼üµÄÖ°ÔðÖ®Ò»¾ÍÊǸú×ٸı䡣

´Ó×îºóÒ»´Î±£´æ¿ªÊ¼£¬context ÖªµÀÄÄЩ¶ÔÏó±»²åÈ룬¸Ä±äÒÔ¼°É¾³ý¡£Äã¿ÉÒÔͨ¹ý -insertedObjects, -updatedObjects, ÒÔ¼° ¨CdeletedObjects ·½·¨À´´ïµ½ÕâÑùµÄЧ¹û¡£Í¬ÑùµÄ£¬Äã¿ÉÒÔͨ¹ý -changedValues ·½·¨À´Ñ¯ÎÊÒ»¸ö±»¹ÜÀíµÄ¶ÔÏóÄÄЩֵ±»¸Ä±äÁË¡£Õâ¸ö·½·¨ÕýÊÇ Core Data Äܹ»½«Äã×ö³öµÄ¸Ä±äÍÆÈëµ½Êý¾Ý¿âµÄÔ­Òò¡£

µ±ÎÒÃDzåÈëÒ»¸öÐ嵀 Item ¶ÔÏóʱ£¬Core Data ÖªµÀÐèÒª½«ÕâЩ¸Ä±ä´æÈë store¡£ÄÇô£¬½«Äã¸Ä±ä¶ÔÏóµÄ title ʱ£¬Ò²»á·¢ÉúͬÑùµÄÊÂÇé¡£

±£´æ values ÐèҪЭµ÷³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷ºÍ³Ö¾Ã»¯ store ÒÀ´Î·ÃÎÊ SQLite Êý¾Ý¿â¡£ºÍÔÚÄÚ´æÖвÙ×÷¶ÔÏó±ÈÆðÀ´£¬È¡³ö¶ÔÏóºÍÖµ£¬·ÃÎÊ store ºÍÊý¾Ý¿âÊǷdz£ºÄ·Ñ×ÊÔ´µÄ¡£²»¹ÜÄã±£´æÁ˶àÉÙ¸ü¸Ä£¬Ò»´Î±£´æµÄ´ú¼ÛÊǹ̶¨µÄ¡£²¢ÇÒÿ¸ö±ä»¯¶¼Óгɱ¾¡£ÕâÊÇ SQLite µÄ¹¤×÷·½Ê½¡£µ±Äã×öºÜ¶à¸ü¸ÄµÄʱºò£¬ÐèÒª½«¸ü¸Ä´ò°ü£¬²¢ÅúÁ¿¸ü¸Ä¡£Èç¹ûÄã±£´æÃ¿Ò»´Î¸ü¸Ä£¬½«Òª¸¶³öºÜ¸ßµÄ´ú¼Û£¬ÒòΪÄãÐèÒª¾­³£×ö±£´æ²Ù×÷¡£Èç¹ûÄãºÜÉÙ×ö±£´æ£¬ÄÇôÄ㽫»áÓÐÒ»´óÅú¸ü¸Ä½»¸ø SQLite ´¦Àí¡£

ͬÑùÐèҪעÒâµÄÊDZ£´æ²Ù×÷ÊÇÔ­×ÓÐԵģ¬ÒªÃ´ËùÓеĸü¸Ä»á±»Ìá½»¸ø store/SQLite Êý¾Ý¿â£¬ÒªÃ´Èκθü¸Ä¶¼²»±»±£´æ¡£µ±ÊµÏÖ×Ô¶¨Òå NSIncrementalStore »ùÀàʱ£¬ÕâÒ»µãÒ»¶¨ÒªÀμÇÔÚÐÄ¡£ÒªÃ´È·±£±£´æÓÀÔ¶²»»áʧ°Ü£¨±ÈÈç˵²»»á·¢Éú³åÍ»£©£¬ÒªÃ´µ±±£´æÊ§°Üʱ£¬Äã store µÄ»ùÀàÐèÒª»Ö¸´ËùÓеĸı䡣·ñÔò£¬ÔÚÄÚ´æÖеĶÔÏóͼ×îÖպͱ£´æÔÚ store ÖеĶÔÏó²»Ò»Ö¡£

Èç¹ûÄãʹÓÃÒ»¸ö¼òµ¥µÄÉèÖ㬱£´æ²Ù×÷ͨ³£²»»áʧ°Ü¡£µ«ÊÇ Core Data ÔÊÐíÿ¸ö³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷Óжà¸ö context£¬ËùÒÔÄã¿ÉÄÜÏÝÈë³Ö¾Ã»¯´æ´¢Ð­µ÷Æ÷²ã¼¶µÄ³åͻ֮ÖС£¸Ä±äÊǶÔÓÚÿ¸ö context µÄ£¬ÁíÒ»¸ö context µÄ¸ü¸Ä¿ÉÄܵ¼Ö³åÍ»¡£Core Data ÉõÖÁÔÊÐíÍêÈ«²»Í¬µÄ¶ÑÕ»·ÃÎÊ´ÅÅÌÉÏÏàͬµÄ SQLite Êý¾Ý¿â¡£ÕâÃ÷ÏÔÒ²»áµ¼Ö³åÍ»£¨±ÈÈ磬һ¸ö context ÏëÒª¸üÐÂÒ»¸ö¶ÔÏóµÄÖµ£¬¶øÁíÒ»¸ö context ÏëҪɾ³ýÕâ¸ö¶ÔÏ󣩡£ÁíÒ»¸öµ¼Ö±£´æÊ§°ÜµÄÔ­Òò¿ÉÄÜÊÇÑéÖ¤¡£Core Data Ö§³Ö¸´ÔӵĶÔÏóÑéÖ¤²ßÂÔ¡£ÕâÊÇÒ»¸ö¸ß¼¶»°Ìâ¡£Ò»¸ö¼òµ¥µÄÑéÖ¤¹æÔò¿ÉÄÜÊÇ£º Item µÄ title ²»Äܳ¬¹ý300¸ö×Ö·û¡£µ«ÊÇ Core Data Ò²Ö§³Öͨ¹ýÊôÐÔ½øÐи´ÔÓµÄÑéÖ¤²ßÂÔ¡£

½áÊøÓï

Èç¹û Core Data ¿´ÆðÀ´ÈÃÈ˺¦Å£¬Õâ×îÓпÉÄÜÊÇÒòΪËüµÄÁé»îÐÔÔÊÐíÄã¿ÉÒÔͨ¹ý·Ç³£¸´Ôӵķ½·¨Ê¹ÓÃËü¡£Ê¼ÖÕ¼Çס£º¾¡¿ÉÄܱ£³Ö¼òµ¥¡£Ëü»áÈÿª·¢±äµÃ¸üÈÝÒ×£¬²¢ÇÒ°ÑÄãºÍÄãµÄÓû§´ÓÂé·³ÖÐÕü¾È³öÀ´¡£³ý·ÇÄãÈ·ÐÅËü»á´øÀ´°ïÖú£¬²ÅȥʹÓøü¸´ÔӵĶ«Î÷£¬±ÈÈç˵ÊÇ background contexts¡£

µ±Ä㿪ʼʹÓÃÒ»¸ö¼òµ¥µÄ Core Data ¶ÑÕ»£¬²¢ÇÒʹÓÃÎÒÃÇÔÚÕâÆªÎÄÕÂÖн²µ½µÄ֪ʶ°É£¬Ä㽫ºÜ¿ì»áÕæÕýÌå»áµ½ Core Data ÄÜΪÄã×öʲô£¬²¢ÇÒѧµ½ËüÊÇÔõôËõ¶ÌÄ㿪·¢ÖÜÆÚµÄ¡£

   
2707 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ