首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Core Data浅谈系列之4 : 数据模型的版本变迁

2013-01-26 
Core Data浅谈系列之四 : 数据模型的版本变迁继上一篇文章末尾提到的,一支队伍可以添加多名球员,不过一名

Core Data浅谈系列之四 : 数据模型的版本变迁
继上一篇文章末尾提到的,一支队伍可以添加多名球员,不过一名球员只能属于一支队伍中,这分别对应着Core Data中一对多和一对一的属性关系:
Core Data浅谈系列之4 : 数据模型的版本变迁

Core Data浅谈系列之4 : 数据模型的版本变迁

如上两图,是在Team实体里面添加了一个players关系,指向Player实体,可以一支球队关联多名球员,并且最多只允许关联15名球员。同样地,也为Player实体添加team关系,指向Team实体:
Core Data浅谈系列之4 : 数据模型的版本变迁

一名球员只能关联一支球队,并且让这个关系成双向的,即一个Player对象属于某支球队时,该球队的players属性就自动关联该Player对象。
做完以上对表关系的修改,再次运行程序。Oops,运行不起来——



并将其设置为当前版本使用的数据模型:
Core Data浅谈系列之4 : 数据模型的版本变迁

Core Data浅谈系列之4 : 数据模型的版本变迁

So,我们刚才发生的变动都应该应用在cdNBA 2.xcdatamodel上。除此之外,还需要在persistentStoreCoordinator添加存储文件时设置一个选项:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator{    if (nil != _persistentStoreCoordinator) {        return_persistentStoreCoordinator;    }        NSString *storeType = NSSQLiteStoreType;    NSString *storeName = @"cdNBA.sqlite";        NSError *error = NULL;    NSURL *storeURL = [NSURLfileURLWithPath:[[selfapplicationDocumentsDirectory] stringByAppendingPathComponent:storeName]];        NSDictionary *options = [NSDictionarydictionaryWithObjectsAndKeys:     [NSNumbernumberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,     [NSNumbernumberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];        _persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:self.managedObjectModel];    if (![_persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:nilURL:storeURL options:options error:&error]) {        NSLog(@"Error : %@\n", [error localizedDescription]);        NSAssert1(YES, @"Failed to create store %@ with NSSQLiteStoreType", [storeURL path]);    }        return _persistentStoreCoordinator;}
做完上面的工作,再跑一遍Demo。
Brief Talk About Core Data Series, Part 4 : Versioning of The Data Model
Jason Lee @ HangzhouBlog : http://blog.csdn.net/jasonblogWeibo : http://weibo.com/jasonmblog

热点排行