CoreData

来源:互联网 发布:java与php的优缺点 编辑:程序博客网 时间:2024/05/29 17:34

//加载托管对象模型(coreData数据模型文件。)

NSString *momdPath = [[NSBundlemainBundle]pathForResource:@"Person"ofType:@"momd"];


NSManagedObjectModel *mom = [[NSManagedObjectModelalloc]initWithContentsOfURL:[NSURLfileURLWithPath:momdPath]];


//创建持久化存储协调器,处理数据的读写

NSPersistentStoreCoordinator *storeCoordinator = [[NSPersistentStoreCoordinatoralloc]initWithManagedObjectModel:mom];


//指定sqlite数据库文件的存储路径(coreData使用的数据库文件后缀一般写sqlite)

NSString *dbPath = [NSHomeDirectory()stringByAppendingString:@"/Documents/test.sqlite"];


//coreData文件映射到数据库,并判断操作状态

NSError *createError = nil;

NSPersistentStore *store = [storeCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:[NSURLfileURLWithPath:dbPath] options:nilerror:&createError];

    if (!store) {//出错,打印错误信息localizedDescription

        NSLog(@"add error: %@", createError.description);

    }


//创建操作数据的对象()

_managedObjectContext = [[NSManagedObjectContextalloc]init];

    

//关联持久化存储协调器

_managedObjectContext.persistentStoreCoordinator = storeCoordinator;





/**/

//在数据库中插入一个实体(模型)

Person *person = [NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:_managedObjectContext];

        

//对实体的属性赋值

person.name = _textName.text;

person.age = [NSNumbernumberWithInteger:_textAge.text.integerValue];


//把插入的实体保存到数据库中

NSError *insertError = nil;

if (![_managedObjectContextsave:&insertError]) {

    NSLog(@"insert error: %@", insertError.description);

} else {//插入成功

    [_persons addObject:person];

    [_tableVreloadData];

}


//删除

if (_persons.count >0) {//确保有数据才删除

    Person *person =_persons[_currentRow];

            

    //从数据库中删除并保存

    [_managedObjectContextdeleteObject:person];

    NSError *saveError = nil;

    if (![_managedObjectContextsave:&saveError]) {

        NSLog(@"delete save error: %@", saveError.description);

    } else {    

    //从本地数组中删除

  [_personsremoveObject:person];

    [_tableVreloadData];

}

}


//修改

Person *person = _persons[_currentRow];

//先修改对象的属性

person.name = _textName.text;

person.age = [NSNumbernumberWithInteger: _textAge.text.integerValue];

        

//再存入数据库

NSError *updateError = nil;

if (![_managedObjectContextsave:&updateError]) {//保存失败

    NSLog(@"update save error: %@", updateError.description);

} else {//保存成功

    [_tableVreloadData];

}



//

NSFetchRequest *fetchRequest = [NSFetchRequestfetchRequestWithEntityName:@"Person"];

//定义查询条件的谓词(加*号的意思是以zh开头)

NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"name like %@",@"zh*"];

//设置fetchRequest的谓词//如果不设查询条件会查询所有

[fetchRequest setPredicate:predicate];

        

//执行查询

NSArray *fetchResult = [_managedObjectContextexecuteFetchRequest:fetchRequest error:nil];

[_persons setArray:fetchResult];

        

[_tableVreloadData];



苹果图标规范

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1


30分钟精通正则表达式

http://deerchao.net/tutorials/regex/regex.htm


UI特效

http://code4app.com/



0 0