MagicalRecord使用中的注意事项
MagicalRecord使用中的注意事项
将bundle中的CoreData相关文件复制到沙盒目录中并使用
复制这三个文件
然后用单例初始化
//
// GlobalCoreData.h
// YXMWeather
//
// Created by XianMingYou on 15/2/20.
// Copyright (c) 2015年 XianMingYou. All rights reserved.
// #import <Foundation/Foundation.h>
#import "CityCode.h" @interface GlobalCoreData : NSObject + (void)globalInit; @end
//
// GlobalCoreData.m
// YXMWeather
//
// Created by XianMingYou on 15/2/20.
// Copyright (c) 2015年 XianMingYou. All rights reserved.
// #import "GlobalCoreData.h" @implementation GlobalCoreData + (void)globalInit {
GCDGroup *group = [GCDGroup new];
if ([@"/Documents/CityCode.sqlite" exist] == NO) {
[[GCDQueue globalQueue] execute:^{
NSString *srcPath = [@"CityCode.sqlite" bundleFile];
NSString *dstPath = [@"/Documents/CityCode.sqlite" path];
[[NSFileManager defaultManager] copyItemAtPath:srcPath
toPath:dstPath
error:nil];
} inGroup:group];
}
if ([@"/Documents/CityCode.sqlite-shm" exist] == NO) {
[[GCDQueue globalQueue] execute:^{
NSString *srcPath = [@"CityCode.sqlite-shm" bundleFile];
NSString *dstPath = [@"/Documents/CityCode.sqlite-shm" path];
[[NSFileManager defaultManager] copyItemAtPath:srcPath
toPath:dstPath
error:nil];
} inGroup:group];
}
if ([@"/Documents/CityCode.sqlite-wal" exist] == NO) {
[[GCDQueue globalQueue] execute:^{
NSString *srcPath = [@"CityCode.sqlite-wal" bundleFile];
NSString *dstPath = [@"/Documents/CityCode.sqlite-wal" path];
[[NSFileManager defaultManager] copyItemAtPath:srcPath
toPath:dstPath
error:nil];
} inGroup:group];
}
[[GCDQueue globalQueue] notify:^{
[MagicalRecord setupCoreDataStackWithStoreAtURL:[NSURL fileURLWithPath:[@"/Documents/CityCode.sqlite" path]]];
} inGroup:group];
} @end
此处要记得设置初始化路径.
[MagicalRecord setupCoreDataStackWithStoreAtURL:[NSURL fileURLWithPath:[@"/Documents/CityCode.sqlite" path]]];
关于NSManagedObjectContext的一些使用细节
NSManagedObjectContext保存了操作数据库句柄的一些上下文,在MagicalRecord中,我们有时候会在子线程中进行查询操作,而到主线程中进行显示操作.问题来了,在实际使用过程中,操作句柄对象NSManagedObjectContext会在跨线程的过程中丢失掉,也就是说数据变成空了.
这个时候,我们需要将操作句柄NSManagedObjectContext定义成属性,然后用
[NSManagedObjectContext MR_context]
来获取出操作句柄并作为属性存储起来(防止丢失)
然后,你就可以做你自己想做的炒作了;)
比如以下操作:
[GCDQueue executeInGlobalQueue:^{
NSPredicate *searchInfo = [NSPredicate predicateWithFormat:@"%@ IN [cd] cityName", textField.text];
self.magicArray = [CityCode MR_findAllWithPredicate:searchInfo
inContext:self.context];
[GCDQueue executeInMainQueue:^{
[self.tableView reloadData];
}];
}];
MagicalRecord使用中的注意事项的更多相关文章
- 在Android中使用am和input命令在实际使用中的注意事项以及小技巧
在Android使用到am和进行一些操作是非常方便的,比如一个重复自动的操作,具体用来实现一些什么是看个人需求了,接下来说对于am和input的使用. 本文适用于已经大概去了解了am和input的朋友 ...
- electron 使用中的注意事项
一.ELECTRON引用JQUERY.JS electron不能像正常的html文件引用jq.js那样(为嘛不造),elecron引用jq.js的方式为: <script>window.$ ...
- SQLFlow使用中的注意事项--设置篇
SQLFlow 是用于追溯数据血缘关系的工具,它自诞生以来以帮助成千上万的工程师即用户解决了困扰许久的数据血缘梳理工作. 数据库中视图(View)的数据来自表(Table)或其他视图,视图中字段(Co ...
- [MFC美化] Skin++使用详解-使用方法及注意事项
主要分为以下几个方面: 1.Skin++使用方法 2.使用中注意事项 一. Skin++使用方法 SkinPPWTL.dll.SkinPPWTL.lib.SkinPPWTL.h ,将三个文件及相应皮肤 ...
- 转载:C语言指针使用的注意事项
相信大家对指针的用法已经很熟了,这里也不多说些定义性的东西了,只说一下指针使用中的注意事项吧. 一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int * a,b;这种声明是声明了一个指向 ...
- c++字符串
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至 ...
- en_windows_10_multiple_editions_version_1511_x64.iso
好久没折腾电脑了,这几天在E盘装了个64位Windows 10 TH2 专业版,从MSDN官网下载的英文原版镜像,用kms10未能激活,一看日志文件,说我这是零售版,后面就关掉了什么监听端口,然后就完 ...
- IOCP入门
完成端口(Completion Port)详解 此文讲解最好,也很全面一下其他文章看看就行,也可不看. 单句柄数据,单IO数据 此文讲述比较清晰,可以辅助理解上文. IOCP编程之基本原理:http: ...
- c++字符串变量---8
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 一.字符串变量的定义 1>.对于C与C++来说是没有字符串型的数据类型的,在C++中是通过包含st ...
随机推荐
- HMM分词实例
class HMM(object): def __init__(self): import os # 主要是用于存取算法中间结果,不用每次都训练模型 self.model_file = 'model/ ...
- springboot-3-其他配置
1, 热部署: 有jrebel的话, 不用了, 不如jre好用 原理: 使用两个classLoad, 一个加载不改变的jar, 另一个加载可更改的jar, 发生改变后, 舍弃可更改的jar重新rest ...
- mongodb自学
http://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
- WPF Trigger for IsSelected in a DataTemplate for ListBox items
<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlugView /> ...
- SQL Server Profiler小技巧——筛选请求
如果需要转载,请附上本文作者和原文链接:http://www.cnblogs.com/zeusro/p/4016228.html Microsoft SQL Server Profiler 是 SQL ...
- 我Win下常用工具清单
GoAgent 搞研发的没有一个FQ访问Google的工具,真没法工作,所以第一主推这个, 相关按照方式请参考: http://www.cnblogs.com/ghj1976/category/696 ...
- 在IIS7中应用Application Request Routing配置反向代理
配置反向代理软件.zip 开启Proxy项: 该设置表面只有HTTP_HOST为phpweb.leven.com.cn的URL才能通过该规则,如果您绑定了多个域名,可以根据多次增加或者通过正则表达式的 ...
- linux 上传下载 以及SCP命令
1. scp 用法 scp就是用来在服务器和本地之间传文件的linux命令还有其他的方法,比如装ftp服务器 copy 本地的档案到远程的机器上 scp /Desktop/test.conf 用户名@ ...
- 移动端Web Meta标签
原文 http://blog.segmentfault.com/jianjian_532633/1190000000654839 添加到推刊 在介绍移动端特有 meta 标签之前,先简单说一下 ...
- python学习之老男孩python全栈第九期_day016作业
1. 请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] import math def func( ...