[ios]关于CoreData的一个工具Mogenerator的使用
来源:互联网 发布:淘宝怎么弄淘口令 编辑:程序博客网 时间:2024/04/30 09:35
最近看到用CoreData时使用的工具Mogenerator,发现网上介绍其具体使用的不多,特此简单整理一下,
关于CoreData这里就不具体说了,使用就用MagicalRecord,用起来真是太方便了。
关于Mogenerator
MagicalRecord是一个命令行工具,通过项目里的.xcdatamodel文件(.xcdatamodeld里面右键点击显示包内容),可以为每个entity生成 两个类,第一个是machine文件_MyEntity,会同步你的data model,第二个是human文件MyEntity,它就是你在代码中#import操作类。你不需要修改machine和human里面的任何文件,用的时候只需要在代码里#import导入human里的.h文件。
安装Mogenerator
方法一:直接从官网http://rentzsch.github.com/mogenerator/下载dmg文件安装
方法二:用Homebrew安装,直接在终端执行brew命令:brew install mogenerator
使用Mogenerator
这里新创建一个MogDemo工程来具体说明
1、创建一个data model文件MogModel.xcdatamodeld,并创建一个实体Person,(如图)这里要注意Person的Entity里的Class项是否是空的,保持Class项与上面的Name项一致就行了。
2、点击工程的TARGETS 一> Build Phases,点击右下角的Add Bulid Pahase,添加脚本Add Run Script (如图)
3、然后在Run Script添加script代码,注意替换相应的data model:(如图) <更新mogenerator脚本,支持data model迁移,获取当前版本>
4、现在可以Build工程,build成功不出意外的话就会在Finder中看到工程文件目录下生成了CoreData文件夹,CoreData下的Human是Person.h/Person.m,Machine里是 _Person.h/_Person.m (如图)
5、在Xcode中将生成的CoreData添加到工程里,右键Add Files "MogDemo" (如图)
最后在代码中#import "Person.h"就可以使用了,如果在.xcdatamodeld为Entity添加属性,添加之后直接Bulid下,就可以在代码里直接使用了。例如给Person添加一个属性phone:(如图)
还有,对于NSNumber类型属性,可以直接像下面一样使用:
关于CoreData这里就不具体说了,使用就用MagicalRecord,用起来真是太方便了。
关于Mogenerator
MagicalRecord是一个命令行工具,通过项目里的.xcdatamodel文件(.xcdatamodeld里面右键点击显示包内容),可以为每个entity生成 两个类,第一个是machine文件_MyEntity,会同步你的data model,第二个是human文件MyEntity,它就是你在代码中#import操作类。你不需要修改machine和human里面的任何文件,用的时候只需要在代码里#import导入human里的.h文件。
安装Mogenerator
方法一:直接从官网http://rentzsch.github.com/mogenerator/下载dmg文件安装
方法二:用Homebrew安装,直接在终端执行brew命令:brew install mogenerator
使用Mogenerator
这里新创建一个MogDemo工程来具体说明
1、创建一个data model文件MogModel.xcdatamodeld,并创建一个实体Person,(如图)这里要注意Person的Entity里的Class项是否是空的,保持Class项与上面的Name项一致就行了。
2、点击工程的TARGETS 一> Build Phases,点击右下角的Add Bulid Pahase,添加脚本Add Run Script (如图)
3、然后在Run Script添加script代码,注意替换相应的data model:(如图) <更新mogenerator脚本,支持data model迁移,获取当前版本>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MODELS_DIR=
"${PROJECT_DIR}/$PROJECT_NAME"
DATA_MODEL_PACKAGE=
"$MODELS_DIR/CoreDataDemoModel.xcdatamodeld"
# - 替换相应的 xxxxx.xcdatamodeld名称
CURRENT_VERSION=`/usr/libexec/PlistBuddy
"$DATA_MODEL_PACKAGE/.xccurrentversion"
-c
'print _XCCurrentVersionName'
`
if
[ -x /usr/
local
/bin/mogenerator ];
then
echo
"mogenerator exists in /usr/local/bin path"
;
MOGENERATOR_DIR=
"/usr/local/bin"
;
elif
[ -x /usr/bin/mogenerator ];
then
echo
"mogenerator exists in /usr/bin path"
;
MOGENERATOR_DIR=
"/usr/bin"
;
else
echo
"mogenerator not found"
;
exit
1;
fi
$MOGENERATOR_DIR/mogenerator -m
"$DATA_MODEL_PACKAGE/$CURRENT_VERSION"
-M
"$MODELS_DIR/CoreData/Machine/"
-H
"$MODELS_DIR/CoreData/Human/"
# 如果是ARC工程,加上 --template-var arc=true就行了,即mogenerator命令换成:
# $MOGENERATOR_DIR/mogenerator --template-var arc=true -m "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" -M "$MODELS_DIR/CoreData/Machine/" -H "$MODELS_DIR/CoreData/Human/"
4、现在可以Build工程,build成功不出意外的话就会在Finder中看到工程文件目录下生成了CoreData文件夹,CoreData下的Human是Person.h/Person.m,Machine里是 _Person.h/_Person.m (如图)
5、在Xcode中将生成的CoreData添加到工程里,右键Add Files "MogDemo" (如图)
最后在代码中#import "Person.h"就可以使用了,如果在.xcdatamodeld为Entity添加属性,添加之后直接Bulid下,就可以在代码里直接使用了。例如给Person添加一个属性phone:(如图)
还有,对于NSNumber类型属性,可以直接像下面一样使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Person *person = [Person createEntity];
person.name = @
"WWDC2012"
;
//person.age = [NSNumber numberWithShort:16];
//现在像NSNumber属性赋值(取值)就可以直接这样:
person.ageValue = 12;
[[
NSManagedObjectContext
defaultContext] saveToPersistentStoreAndWait];
NSArray
*arr = [Person findAll];
for
(Person *newPerson in arr) {
NSLog
(@
"age=:%d"
,newPerson.ageValue);
}
0 0
- [ios]关于CoreData的一个工具Mogenerator的使用
- 关于CoreData的一个工具Mogenerator的使用
- 关于CoreData的一个工具Mogenerator的使用
- CoreData - Mogenerator 的使用
- Mogenerator的初级使用
- IOS - CoreData的使用
- iOS CoreData的使用
- 关于iOS开发的CoreData
- ios中的coredata的使用
- IOS CoreData的初始化使用
- ios中的coredata的使用
- ios中的coredata的使用
- ios中的coredata的使用
- iOS CoreData的基本使用
- ios中coredata的使用
- ios中的coredata的使用
- ios中的coredata的使用
- ios中的coredata的使用
- Collection List Set Map 区别记忆
- c++ 单例
- Android菜鸟在成长-对话选项框2单选和复选
- latex 图表 figure and table 混排
- php bom去除工具_php批量去除bom的代码[交流qq 158393237] 微信管家不显示验证码 微信管家无法显示验证码
- [ios]关于CoreData的一个工具Mogenerator的使用
- Valid Sudoku & Subsets I&&II & Flatten Binary Tree to Linked List & Jump Game I&&II
- Java学习笔记_16_JavaBean
- SQL 列转行/list agg 列超长处理方法
- 漫谈惯性、视觉暂留、潜意识、混合动力发动机、先入为主 - 纯粹的无厘头?
- android json解析及简单例子
- Java 8的元空间
- leetcode 第一刷_Remove Nth Node From End of List
- 微信管家不显示验证码的解决方式