`
119568242
  • 浏览: 419410 次
  • 性别: Icon_minigender_1
  • 来自: 深圳/湛江
社区版块
存档分类
最新评论

[ios]coreData 的一些操作

    博客分类:
  • ios
 
阅读更多

通过NSManagerDocument获取NSManagerObjectContext然后操作

NSFetchRequest 存放查询条件的(NSPredicate等)

NSManagerObjectContext对象 通过方法executeFetchRequest: error:来返回查询结果。

 

 

如果需要查询全部 的时候 就对NSFetchRequest 不要设置NSPredicate就可以了。

 

太晚了 有空再写吧。

 

//
//  ViewController.m
//  DemoCoreData
//
//  Created by liu poolo on 13-3-17.
//  Copyright (c) 2013年 liu poolo. All rights reserved.
//

#import "ViewController.h"
#import "Student.h"
#import "Book.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize managedObjectContext=m_managedObjectContext;


- (IBAction)btGetManagerDocument:(id)sender {
    NSManagedObjectContext *t=self.managedObjectContext;
}

int i=0;
- (IBAction)btInsertBook:(id)sender {
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath=([paths count]>0)?[paths objectAtIndex:0]:nil;
    NSURL *url=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@",basePath,@"test.sqlite"]];
    NSLog(@"111");
    UIManagedDocument *md=[[UIManagedDocument alloc]initWithFileURL:url];
    if([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){
        [md openWithCompletionHandler:^(BOOL success){
            if(success){
                NSLog(@"1111");
                if(md.documentState==UIDocumentStateNormal){
                    m_managedObjectContext=md.managedObjectContext;
                    Book *b1=[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:m_managedObjectContext];
                    b1.b_id=[NSNumber numberWithInt:0];
                    b1.b_name=@"poolo 日记";
                    Student *s1=[NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:m_managedObjectContext];
                    b1.b_owner=s1;
                    s1.s_id=[NSNumber numberWithInt:1];
                    s1.s_name=@"poolo";

                        

                }
            }else{
                NSLog(@"counldn't open document at %@",url);
            }
        }];
    }else{
        [md saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
            if(success){
                if(md.documentState==UIDocumentStateNormal){
                    m_managedObjectContext=md.managedObjectContext;
                    NSLog(@"2url:%@",url);
                    [md closeWithCompletionHandler:^(BOOL success) {
                        
                    }];
                }
            }else{
                NSLog(@"counldn't open document at %@",url);
            }
        }];
    }
}

- (IBAction)btQuery:(id)sender {
    
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath=([paths count]>0)?[paths objectAtIndex:0]:nil;
    NSURL *url=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@",basePath,@"test.sqlite"]];
    NSLog(@"111");
    UIManagedDocument *md=[[UIManagedDocument alloc]initWithFileURL:url];
    if([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){
        [md openWithCompletionHandler:^(BOOL success){
            if(success){
                NSLog(@"1111");
                if(md.documentState==UIDocumentStateNormal){
                    
                    NSFetchRequest *f=[NSFetchRequest fetchRequestWithEntityName:@"Student"];
                    NSPredicate *pc=[NSPredicate predicateWithFormat:@"s_name contains %@",@"poolo"];
                    f.predicate=pc;//如果需要查询全部 的时候 就对NSFetchRequest 不要设置NSPredicate就可以了。
                    NSError *e;
                    NSArray* students=[md.managedObjectContext executeFetchRequest:f error:&e];

                    for(Student *st in students){
                        for(Book *bk in st.s_books){
                        NSLog(@"stundet id:%@ name:%@ book_id:%@ book_name:%@",st.s_id,st.s_name,bk.b_id,bk.b_name);
                        }
                    }


        
                }
            }else{
                NSLog(@"counldn't open document at %@",url);
            }
        }];
    }else{
        [md saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
            if(success){
                if(md.documentState==UIDocumentStateNormal){
                    m_managedObjectContext=md.managedObjectContext;
                    NSLog(@"2url:%@",url);
                    [md closeWithCompletionHandler:^(BOOL success) {
                        
                    }];
                }
            }else{
                NSLog(@"counldn't open document at %@",url);
            }
        }];
    }
    }




- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

分享到:
评论

相关推荐

    iOS CoreData 数据迁移操作底板

    本资源为本人文章 “iOS CoreData数据迁移” 操作底板,可以下载下来参照博客进行学习数据迁移

    iOS CoreData 增 删 改 查 demo

    改demo 实现了iOS里面的coredata的增删改查操作

    iOS CoreData基本架构类

    CoreDataDAO继承于NSObject,作为一个基本的model; CoreDataDAO中含有managedObjectModel、managedObjectContext、persistentStoreCoordinator等基本类和方法,方便其...NoteDao继承于CoreDataDAO,执行Note的CRUD操作

    iOS-CoreData入门示例

    通过简单的增删改查功能演示iOS CoreData框架的使用,还包括点击空白区域收起键盘的操作。本示例代码结构清晰,注释详尽,非常有助于初学者入门。 环境要求:项目在iOS SDK6.1和7.0环境下编译通过,其他SDK版本未...

    CoreData的简单操作

    iOS中的CoreData实现增删改查

    ios-Coredata 的对象存储及增 删 改 查 条件过滤的详细解释.zip

    这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 demo 又有解释,实现快速上手.

    CoreData使用demo

    第二是CoreData操作数据不需要使用SQLite代码,使用方便。第三是CoreData把数据用面向对象方式进行管理,操作数据库更方便。 CoreData的核心是Core Data stack(技术栈堆)。CoreData就是依靠Core Data stack中的几个...

    IOS 20个实用例子.zip

    -- IOS之分析网易新闻存储数据 CoreData的使用 增删改查 -- IOS二维码扫描Demo -- 18个 ios 项目源代码 -- iOS通讯录联系人列表较完整(中文排序) -- 仿网易新闻客户端(ios) -- UICollectionView Demo -- iOS 实现...

    iOS-Swift-TableView-CoreData-Example:带CoreData示例的iOS 8 TableView

    带CoreData示例的iOS TableView 由( 在07 / SEP / 15上创建。 什么? 关于TableView和CoreData一起工作的简单示例。 iOS版本: 9 语言:斯威夫特 Xcode: 7.0 特征 具有操作的TableView(添加项目并在单元格上...

    测试一下市面上常见的iOS DB存储库及iOS系统自带的CoreData存储方案.zip

    操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...

    CoreData增删改查Demo

    CoreData的简单用法,增删改... CoreData让不懂sql语句的人获益不少,因为他的操作基本是不用sql语句的。个人感觉效率比FMDM操作数据库高,而且还能直接生成实体类,省去了我们去一个文件一个文件的去建立model层的东西

    包装Core Data框架的iOS开源类库

    源码NLCoreData,NLCoreData是包装Core Data框架的开源类库,让Core Data操作更加容易和易读。使用NLCoreData可以少写很多代码,增加代码的易读性,并且可以在编译时进行代码检查。

    Swift中CoreData经典实例_中文注释完全版

    1.一个完整的app,简单完整的展示coredata在swift中的用法。...包括操作撤回、取消撤回功能。3.包括监控系统语言修改功能。4.包括coredata与tableview的融合。5.完全是用swift实现,下载后直接xcode即可运行。

    CoreData和AFNetworking使用方法、图片缓存

    具体使用方法参见博客: .../* CoreData 基本操作方法封装 */ http://blog.csdn.net/marujunyy/article/details/18500523 /* AFNetWorking 的简单使用 */ http://blog.csdn.net/marujunyy/article/details/18424711

    CoreData实用案例

    iOS开以中,CoreData的一个简单实用的小例子,包括以下功能: 1、数据读取; 2、数据存储; 3、添加数据; 4、删除数据; 注:读取数据操作,支持按条件查询、按条件排序两个功能。 如有不明白的地方,可以发邮件到...

    接缝:无缝CloudKit与CoreData同步

    话题产品特点自动将CoreData模型映射到CloudKit私有数据库支持资产后台同步解决冲突要求iOS 8.0以上/ Mac OS X 10.10以上Xcode 7.1以上通讯如果您想贡献,请提交。 如果您的应用程序使用Seam,我们将很高兴将其添加...

    CoreData例子

    Core Data是Mac OS X中Cocoa API的一部分,首次在Mac OS X 10.4 Tiger与iOS 3.0系统中出现[2]。它允许按照实体-属性-值模型组织数据,并以XML,二进制文件或SQLite数据文件的格式将其串行化。Core Data允许用户使用...

    swift-GYDataCenter一个操作SQLite数据库操作iOS框架

    GYDataCenter 是一个 SQLite 数据库框架,提供了一套简单易用的面向对象的数据操作接口,同时保留了 SQL 查询的灵活性。GYDataCenter 简单易上手,相对于 CoreData,GYDataCenter 的学习成本更低。

    ios网络编程

    包含AFNetWorking,CoreData,GCD,KissXMl,NsPredicate,NSTHread,NSSession,Popover,SDwebImage,sql,经纬度转换,触底刷新,FLV布局,代码操作数据库,反向传值,录音,视频播放,同步请求,网络请求,系统地图...

    Swift编写的CoreData管理库

    适合初级和高级开发者,完全自定义,语法友好,兼容OS X和iOS,文档支持完善,测试完善(所有组件均使用XCTest测试)。 可在不同的堆栈间进行更改,而不会影响到app的其余部分。 百分百Swift编写,对于Objective-C,...

Global site tag (gtag.js) - Google Analytics