设为首页 加入收藏

TOP

数据存储小结(二)
2014-11-24 03:13:25 来源: 作者: 【 】 浏览:7
Tags:数据 存储 小结

–archiver:didEncodeObject:

–archiverDidFinish:

–archiver:willEncodeObject:

–archiverWillFinish:

–archiver:willReplaceObject:withObject:

类和类名

+ setClassName:forClass:

+ classNameForClass:

–setClassName:forClass:

–classNameForClass:

异常

extern NSString *NSInvalidArchiveOperationException;

NSKeyedUnarchiver

创建

–initForReadingWithData:

取消归档

+ (id)unarchiveObjectWithData:(NSData *)data // 从data中得到实现归档的对象

+ (id)unarchiveObjectWithFile:(NSString *)path // 从文件中得到

解码数据

- (BOOL)containsValueForKey:(NSString *)key // 是否包含给定的key编码对象

–decodeBoolForKey:

–decodeBytesForKey:returnedLength:

–decodeDoubleForKey:

–decodeFloatForKey:

–decodeIntForKey:

–decodeInt32ForKey:

–decodeInt64ForKey:

–decodeObjectForKey:

- (void)finishDecoding // 通知委托解码结束,调用后不能再继续解码

代理委托

–delegate

–setDelegate:

–unarchiver:cannotDecodeObjectOfClassName:originalClasses:

–unarchiver:didDecodeObject:

–unarchiver:willReplaceObject:withObject:

Finishing Decoding

–unarchiverDidFinish:

–unarchiverWillFinish:

类名

+ setClass:forClassName:

+ classForClassName:

–setClass:forClassName:

–classForClassName:

异常

NSString *NSInvalidUnarchiveOperationException;

(三).CoreData

xcdatamodeld文件中Entity的三种属性:

Attributes: 对应的Obj-c类的接口变量.

Relationships: Entity之间的关系,to-one,or to-many.

Fetched properties: 对上面Relationship的过滤 参考参考1

对应文件存储形式

COREDATA_EXTERN NSString * const NSSQLiteStoreType NS_AVAILABLE(10_4, 3_0);// SQLite形式存储

COREDATA_EXTERN NSString * const NSXMLStoreType NS_AVAILABLE(10_4, NA);// ios不可用

COREDATA_EXTERN NSString * const NSBinaryStoreType NS_AVAILABLE(10_4, 3_0);// 二进制形式存储

COREDATA_EXTERN NSString * const NSInMemoryStoreType NS_AVAILABLE(10_4, 3_0);// 内存中

基本使用过程(括号中参考sql术语)

NSManagedObjectModel对象 获取工程中xcdatamodeld文件设置的模版(就是你的数据库有哪些表,表中有哪些字段的一种说明)

NSPersistentStoreCoordinator对象 根据上面的模版生成或对应的一个文件(数据库文件,具体的数据文件)

NSManagedObjectContext对象 上面文件的操作的空间,增删改查都通过这里进行

NSEntityDescription对象 得到上面context中的一个表

NSFetchRequest对象 对上面表的一些具体操作,增删改查

- (NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error; 使用这个方法执行上面的request

如果增删改了context,记得保存。结束

过程示例:

NSManagedObjectContext *managedObjectContext = nil;

// 得到模版

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"YOUR_XCDATAMODELD_FILE_NAME" withExtension:@"momd"];

NSManagedObjectModel* managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

// 具体文件,DOCUMENT_DICRECTORY应该是nsurl的..

NSURL *storeURL = [@"DOCUMENT_DICRECTORY" URLByAppendingPathComponent:@"SQLITE.sqlite"];

NSError *error = nil;

NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];

// 使用SQLite存储

if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

// 出错

}

else

{

// 得到操作空间

managedObjectContext = [[NSManagedObjectContext alloc] init];

[managedObjectContext setPersistentStoreCoordinator:coordinator];

}

// 得到具体的表

NSEntityDescription *entityDescription = [NSEntityDescription

entityForName:@"ONE_ENTITY_NAME"

inManagedObjectContext:managedObjectContext];

// 操作语句

NSFetchRequest *request = [[NSFetchRequest alloc] init];

[request setEntity:

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇远程登录阿里云上的MySQL 下一篇视图--虚拟表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)
·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)