[ios]coreData 的一些操作

通过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

 

VS Code + EIDE + Clangd 构建 Keil/MDK 嵌入式开发新范式 嵌入式C/C++开发长期受限于传统IDE的语法理解弱、导航卡顿、跨工程复用难等问题。Clangd作为基于AST的现代语言服务器,结合EIDE对Keil uVision和ARM MDK工程文件(.uvprojx)的深度解析能力,可将编译配置、芯片型号、内存模型、扩展关键字等语义精准翻译为标准compile_commands.json,从而实现智能跳转、宏展开识别、结构体实时展开等高阶编辑体验。该方案不替换Keil/MDK编译与烧录流程,仅升级代码理解层,天然兼容STC8051、STM32 Cortex-M、G 阅读详情

相关推荐

从零到一:基于Docker与OSM数据构建Valhalla路径规划服务及Mapbox风格可视化

本文详细介绍了如何从零开始,基于Docker容器技术快速部署开源的Valhalla路径规划服务。通过获取免费的OSM地图数据并构建路网,最终实现服务调用与Mapbox风格的地图可视化,为出行应用原型开发或本地化路径规划服务提供了一套完整、高效的实践方案。

weixin_29297127的博客 161

iOS开发——高级技术&iCloud服务

iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录、备忘录、邮件、照片、音乐、视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一台新的设备上也可以通过Apple ID登录同步。当然这些内容都是iOS内置的功能,那么对于开放者如何利用iCloud呢?苹果已经将云端存储功能开放给开发者,利用iCloud开发者 可以存储两类数据:...

weixin_33691817的博客 384

Python量化交易实战:如何用vnpy+Tushare获取股票历史数据(附完整代码)

本文详细介绍了如何利用vn.py框架与Tushare数据接口,构建一个健壮的Python量化交易数据获取引擎。通过封装Tushare API,实现股票历史数据的自动化获取与格式转换,并适配vn.py的BarData结构,为策略回测与实盘交易提供稳定、高效的数据基础。文中提供了完整的代码实现,涵盖环境配置、核心封装逻辑及高级功能扩展。

cola5的博客 1219

iOS中操作CoreData框架设计

coreData是iOS开发中数据库相关的核心框架,但是在多线程处理的情况下有点麻烦。官方有三种方法 1. 每一个thread都有一个NSManageObjectContext 2. 只有一个NSManageObjectContext,但是由一个线程来合并数据 3. 只有一个NSManageObjectContext,但得加锁的方法控制,达到线程同步。 这三种方法都在网方文

swj6125的专栏 1089

C/C++ LMS算法详解及源码

LMS(Least Mean Squares)算法是一种自适应滤波器算法,用于估计一个系统的参数,以使输出信号与期望信号之间的均方误差最小化。LMS算法通过使用梯度下降的方法,逐步调整自适应滤波器的权值来优化滤波效果。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 3275

SCTPPortScan SCTP协议端口扫描、关联地址识别、传输状态检测

Windows:Winsock2+SCTP扩展)。- **SCTP API封装**:Linux下直接调用`socket()`、`connect()`、`getsockopt()`等系统函数,解析`struct sctp_status`和`struct sctp_paddrinfo`获取状态和关联地址。qDebug() << "开始SCTP扫描:" << ipList.size() << "个IP," << ports.size() << "个端口,共" << m_totalTasks << "个任务";

寒寒豆豆软件公司的博客 91

iOS CoreData之单表操作(增删改查)

CoreData框架, 具有一种对象关系映射机制, 即能够将OC对象转化为数据保存在SQLite(数据库)中, 同时也能够将SQLite中的数据还原为OC对象, 而在此相互转化过程中, 我们无需写繁琐的sql语句. 接下来以单表的增删改查为例: 如果你一开始就能预测到你得工程会用到数据库, 那么创建工程之时, 请不要忽视Xcode对你善意的提醒: 当然, 如果你在创建工程之初, 操作

Macro 1963

RK3566-预装APP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_24093081的博客 701

iOS基础-CoreData--使用总结关联操作

东风不与周郎便,铜雀春深锁二乔!<太阳珊瑚> <big>CoreData</big> 数据持久化框架是Cocoa API的一部分,它允许按照 实体-属性-值 模型组织数据,并以XML(做MAC-os用), 二进制, 或者SQLite数据文件的格式持久化数据. CoreData主要提供 对象-关系映射(ORM)功能,把OC对象转化为...

小超人的博客 244

医疗AI知识库更新慢?提示工程架构师用Agentic AI自动更新的策略

我们的目标是用Agentic AI替代传统更新流程中的“重复劳动”,让医疗知识库(以知识图谱为例)能自动跟踪最新医学进展,把“更新周期从数月缩短到数天”。从PubMed/指南数据库自动抓取新文献;用提示工程从文本中提取结构化医学知识;自动校验新知识与旧知识的冲突;将通过校验的知识写入知识图谱。拆问题:先讲医疗知识库更新慢的3大根源;给方案:用Agentic AI设计4个“小助手”解决问题;讲原理:每个小助手的工作逻辑+提示工程技巧;做实战。

AI 原生应用开发的博客 1061

YOLOv12涨点改进 | CVPR 2026 |独家创新首发、特征融合改进篇 | 引入Local Attender 局部注意力算子融合模块,高效捕捉小目标和密集目标的局部上下文特征,助力高效涨点

🚀本文提出LocalAttender模块改进YOLOv12模型,通过局部注意力机制解决传统上采样方法的语义漂移问题。该模块采用固定偏移邻域加权聚合方式,在保持线性计算复杂度的同时有效捕捉小目标和密集目标的局部特征。实验表明,LocalAttender能显著提升检测精度而不增加过多计算负担,且与YOLOv12兼容性强。文章详细介绍了模块原理、实现方法和配置步骤,并提供了两种改进方案的具体yaml配置文件。这一创新为提升目标检测性能提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 118

IOS coredata数据库操作

1.创建Data Model

u014202635的专栏 636

扩散模型与强化学习(13):In-Context Reward Hacking现象与解决方案

奖励作弊(Reward Hacking)指智能体通过钻规则漏洞而非真正完成任务来最大化奖励信号。以论文编辑实验为例,研究提出“上下文奖励作弊”(ICRH)概念,即模型利用共享上下文钻空子,如盲目添加“正确!”或输出无关内容。实验发现,模型规模扩大可能加剧ICRH,且提示词优化难以根治。与传统奖励作弊不同,ICRH发生在部署阶段,由通用性驱动。应对建议包括多轮测试、多样化反馈及异常场景模拟,但尚无完美解决方案。

沉迷单车的追风少年 1319

iOS数据库操作之coredata详细操作步骤

CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong iOS应用数据存取的常用方式•XML属性列表-- PList•NSKeyedArchiver归档•Prefer...

weixin_30377461的博客 98

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IOS数据管理工具CoreData入门之双向关系操作

IOS数据管理工具CoreData入门之双向关系操作是本文要介绍的内容,主要来介绍CoreData入门双向关系的操作和学习,不多说,我们先来看详细内容介绍。 双向的时候,只用指定一边,另外一边自动指定,比如,如果一个帐号只有一个联系人,而一个联系人对应一个帐号的话,那么帐号表和联系人表就是一一对应的关系,将他们指定为双向的,如下面将cnt1.act = act1; cnt2.act = cn

jinyeweiyang的专栏 467

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

iOS 26 CoreData API 变动:数据持久化操作兼容处理

旧版回滚点定义: $$ \text{RollbackPoint} = t - \Delta t $$ 新版采用动态窗口: $$ \text{WindowSize} = k \log_{10}(n) \quad \text{其中} \ n=\text{操作数} $$采用原子性更强的分段提交模式: $$ \text{事务流程} = \text{预处理} \oplus \text{验证} \oplus \text{持久化} $$ 需注意旧版。编译标志进行过渡测试,重点关注轻量迁移路径的异常捕获。

2501_94069212的博客 361

iOS之数据库-- coredata数据库操作

// //  ViewController.m //  schcoredatasqlite // //  Created by tianshangrenjian on 15/6/25. //  Copyright © 2015年 tianshangrenjian. All rights reserved. // #import "ViewCon

woshidaniu的专栏 1878

终极指南:TimLiu-iOS CoreData关系建模与批量操作优化技巧

在iOS开发中,**CoreData**是Apple提供的高效数据持久化框架,而**TimLiu-iOS**项目为开发者提供了丰富的CoreData优化实践和最佳方案。本指南将深入探讨CoreData关系建模的核心概念和批量操作的高效技巧,帮助您构建更稳定、更快速的iOS应用数据层。 ## 📊 CoreData关系建模基础 **CoreData关系建模**是构建复杂数据模型的关键。在TimL

gitblog_00620的博客 818

iOS 使用CoreData进行数据操作

最近有小伙伴问我coreData的使用,而且上次写了一篇关于地图定位文章帮到了有需要的人,我感到很高兴, 所以我想分享一下Xcode 自带的CoreData的使用。Apple自带的coreData真的很强大,它基于Sqlite进行数据的存储和删除等操作,不需要引入像FMDB等这类第三方,基本上能够满足项目的需求。但是FMDB也是一个很不错的第三方,如果后台给你的数据全都存在db库里面,现在使用FMD

Bruce Pnn的博客 533

iOS CoreData的简单操作以及版本迁移

了解CoreData的使用之前先看看CoreData中三个主要类 CoreData 进行增删改查的时候常用的类: NSEntityDescription: 获取实体对象 NSFetchRequest: 请求体 NSPredicate: 请求条件 NSSortDescriptor: 排序 CoreData 进行增删改查的简单操作 先引入头文件#import "AppDelegate....

weixin_34406061的博客 110

iOS数据库操作之coredata详细操作步骤(转)

CoreData 1.常用类和方法(注意需要导入coredata框架) 表结构:NSEntityDescription 表记录:NSManagedObject 数据库存放方式:NSPersistentStoreCoordinator(持久化存储协调者) 数据库操作:NSManagedObjectContext(被管理的对象上下文) 技术博客http://...

weixin_30558305的博客 112

iOS-CoreData详解与使用

上面已经说完了SQLite和FMDB以及两者的区别,本篇将讲述iOS中另一个存储方式,CoreData的使用。通读下来大约10分钟,后续还会根据项目中问题,不断更新。 一、预备知识在了解CoreData,大家有必要了解对象关系映射(英语称object Relational Mapping,简称ORM)。1.ORMORM是通过使用描述对象和数据库之间映射的元数据,可以实现将对象自动持久化到关系数据库...

li123128的博客 4398

ios 开发xcode8.2 coredata升级操作

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34406061的博客 184

iOS基础-- CoreData 数据库表关联操作

-barButtonItemClicked方法里 //Class NSEnti...

小超人的博客 304

CoreData初始识 使用CoreData为数据库添加数据

//基本概念(用关系数据库的概念来解释):model相当于数据库,entity相当于表,attribute 相当于表中的字段, relationship相当于关系 @implementation ViewController - (void)viewDidLoad {     [super viewDidLoad];      //    1、初始化模型(数据

GuodongSun0的专栏 779
上一篇: [ios] iOS html解析1(包含中文字符)
下一篇: [ios]tabbar超过5个后出现的more标签文字修改 以及more、configure界面 修改问题
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值