`
119568242
  • 浏览: 427016 次
  • 性别: 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使用(封装)

    CoreDataText这个文件名可能是项目中用于演示或存储CoreData操作的文本数据的实体名称。通过这样的封装,开发者可以更专注于业务逻辑,而不用过于关心数据存储的细节。 总之,CoreData是iOS开发中实现数据持久化的...

    iOS CoreData 的小Demo

    这个“iOS CoreData的小Demo”是一个很好的起点,对于初学者来说,它可以帮助理解并掌握CoreData的基本用法。在这个项目中,你将看到如何设置数据模型,创建NSManagedObject子类,以及在UI中与CoreData交互。 1. **...

    iOS CoreData 数据迁移操作底板

    这个“iOS CoreData 数据迁移操作底板”显然是一个辅助开发者理解和实践数据迁移的资源。下面将详细介绍iOS中CoreData数据迁移的相关知识点。 1. CoreData简介: CoreData并不是数据库,而是Apple提供的一套用于...

    IOS coredata使用

    在iOS开发中,CoreData是苹果提供的一种强大的数据管理框架,用于实现本地数据持久化。相比SQLite3,CoreData提供了更高层次的抽象,使得开发者能够更便捷地处理数据模型、对象关系以及数据存储。本篇文章将详细介绍...

    iOS CoreData 增 删 改 查 demo

    本教程通过一个简单的"增删改查"(CRUD)DEMO,深入讲解如何利用CoreData在iOS应用中进行数据操作。 一、CoreData基本概念 1. Managed Object Context(MOC):是CoreData的主要工作区,负责处理数据对象的创建、...

    ios-coredata简单封装.zip

    "ios-coredata简单封装.zip" 文件显然包含了一个简化Core Data使用流程的封装库或代码示例,旨在帮助开发者更高效地进行增删改查操作。 1. **建表(创建实体)**: 在Core Data中,"表"被称为实体(Entity)。创建...

    ios-CoreData添加、删除数据,聊天记录式分页查询.zip

    同时,需要注意线程安全,因为CoreData操作通常应在主线程中进行。 删除数据则是通过NSManagedObjectContext的deleteObject方法来实现。首先,获取要删除的对象,然后调用此方法标记为待删除,最后保存上下文以实际...

    iOS CoreData实现简易的成绩管理系统

    在iOS应用开发中,CoreData是一个强大的框架,用于管理应用程序的模型层对象和数据持久化。这个教程将向你展示如何使用CoreData来构建一个简易的成绩管理系统,通过表视图来实现成绩的增删查改功能。以下是关于...

    iOS coredata 简单使用

    在iOS开发中,Core Data是苹果...综上所述,Core Data是iOS开发中处理数据的重要工具,通过理解并熟练掌握其基本概念和操作,可以高效地构建数据驱动的应用程序。在实践中,不断探索和优化,才能更好地利用这一框架。

    ios CoreData demo

    【iOS CoreData 演示】 CoreData 是苹果公司提供的一种数据管理框架,主要用于 iOS 和 macOS 应用程序中,用于存储和检索应用程序的数据。它是一个对象图形管理系统,可以帮助开发者高效地处理模型层的对象,提供了...

    iOS CoreData and Sqlite3 Demo

    在iOS开发中,CoreData和SQLite3是两种常见的数据存储技术。它们各有特点,适用于不同的应用场景。本Demo旨在展示如何在iOS应用中使用这两种技术,包括数据管理、用户交互以及正则表达式的应用。 首先,CoreData是...

    iOS CoreData基本架构类

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

    iOS本地数据库Sqlite(FMDB)及CoreData的使用

    在iOS中,SQLite可以通过FMDB库进行操作。FMDB是一个Objective-C的SQLite封装,提供了简单易用的API,使得开发者可以方便地执行SQL语句,进行数据的增删改查。例如,你可以创建数据库、创建表、插入数据、查询数据...

    CoreData iOS

    在TestCoreData这个压缩包文件中,可能包含了一些示例代码或者项目,用于演示如何在实际项目中使用CoreData。这些示例可能包括了如何设置CoreData模型、如何在代码中操作数据、如何执行查询以及如何处理数据变更等...

    ios coredata demo

    这个"ios coredata demo"项目旨在为初学者和其他开发者提供一个实践和理解Core Data的平台。通过这个项目,我们可以深入学习如何在iOS应用中使用Core Data进行数据存储和检索。 1. **Core Data架构** Core Data ...

    IOS之分析网易新闻存储数据 CoreData的使用 增删改查

    本篇文章将深入探讨如何在iOS应用中使用CoreData进行数据的增删改查操作,并结合实例——分析网易新闻的存储数据来阐述其工作原理。 首先,让我们了解CoreData的基本概念。CoreData不是一个数据库,而是一个对象图...

    iOS-CoreData入门示例

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

    iOS-CoreData源码Demo

    ### CoreData操作流程 1. **创建数据模型**: 使用Xcode的Data Model Editor创建并定义实体、属性和关系。 2. **初始化MOC**: 在应用程序中,你需要创建一个MOC实例,并配置持久化存储选项。 3. **创建实体对象**:...

    IOS CoreData使用

    **正文** iOS应用开发中,CoreData是一个强大的数据管理框架,用于存储和管理应用...通过创建数据模型、初始化CoreData栈、操作Managed Objects以及查询和更新数据,开发者可以在iOS应用中实现复杂的数据管理功能。

Global site tag (gtag.js) - Google Analytics