IOS-将任意对象存进数据库
model
//
// HMShop.h
// 将任意对象存进数据库
//
// Created by apple on 14/11/20.
// Copyright (c) 2014年 heima. All rights reserved.
// #import <Foundation/Foundation.h> @interface HMShop : NSObject <NSCoding>
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) double price; @end //
// HMShop.m
// 将任意对象存进数据库
//
// Created by apple on 14/11/20.
// Copyright (c) 2014年 heima. All rights reserved.
// #import "HMShop.h" @implementation HMShop
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.name forKey:@"name"];
[encoder encodeDouble:self.price forKey:@"price"];
} - (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super init]) {
self.name = [decoder decodeObjectForKey:@"name"];
self.price = [decoder decodeDoubleForKey:@"price"];
}
return self;
} - (NSString *)description
{
return [NSString stringWithFormat:@"%@ <-> %f", self.name, self.price];
}
@end
Controller
//
// HMViewController.m
// 将任意对象存进数据库
//
// Created by apple on 14/11/20.
// Copyright (c) 2014年 heima. All rights reserved.
// #import "HMViewController.h"
#import "HMShop.h"
#import "FMDB.h" @interface HMViewController ()
@property (nonatomic, strong) FMDatabase *db;
@end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad]; [self setup]; [self readShops];
} - (void)setup
{
// 初始化
NSString *path = @"/Users/apple/Desktop/shops.data";
self.db = [FMDatabase databaseWithPath:path];
[self.db open]; // 2.创表
[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, shop blob NOT NULL);"];
} - (void)readShops
{
FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop LIMIT 10,10;"];
while (set.next) {
NSData *data = [set objectForColumnName:@"shop"];
HMShop *shop = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@", shop);
}
// NSMutableArray *shops = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/apple/Desktop/shops.data"];
// NSLog(@"%@", [shops subarrayWithRange:NSMakeRange(20, 10)]);
} - (void)addShops
{
// NSMutableArray *shops = [NSMutableArray array];
// for (int i = 0; i<1000; i++) {
// HMShop *shop = [[HMShop alloc] init];
// shop.name = [NSString stringWithFormat:@"商品--%d", i];
// shop.price = arc4random() % 10000;
// [shops addObject:shop];
// }
// [NSKeyedArchiver archiveRootObject:shops toFile:@"/Users/apple/Desktop/shops.data"];
for (int i = ; i<; i++) {
HMShop *shop = [[HMShop alloc] init];
shop.name = [NSString stringWithFormat:@"商品--%d", i];
shop.price = arc4random() % ; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:shop];
[self.db executeUpdateWithFormat:@"INSERT INTO t_shop(shop) VALUES (%@);", data];
}
} @end
IOS-将任意对象存进数据库的更多相关文章
- ios 将随意对象存进数据库
要将一个对象存进数据库的blob字段,最好先转为NSData.一个对象要遵守NSCoding协议,实现协议中对应的方法,才干转成NSData. NSData *statusData = [NSKeye ...
- FMDB将对象放进数据库[二](使用runtime)
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 删除 id 列表 存进数据库
当图片写的传id的时候 用着方法存进数据库
- FMDB将对象放进数据库[一]
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- python-Pymyslql-requests_html:把腾讯新闻的今日推荐和链接存进数据库
使用pumsql封装的部分功能 request_html:打开www.qq.com的例子 结果: PS:记得处理数据
- Java 读取Excel内容并保存进数据库
读取Excel中内容,并保存进数据库 步骤 建立数据库连接 读取文件内容 (fileInputStream 放进POI的对应Excel读取接口,实现Excel文件读取) 获取文件各种内容(总列数,总行 ...
- 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理
利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理 2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论: ...
- 使用iOS原生sqlite3框架对sqlite数据库进行操作
摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...
- 【原】iOS学习之SQLite和CoreData数据库的比较
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...
随机推荐
- mysql 客户端命令行下 直接查询并导出数据
mysql原来还能这么导出数据,涨知识了. 方式1: select ....(sql语句) INTO OUTFILE '/var/lib/mysql/msg_data.csv ' (导出的文件位置 ...
- Pandas 横向合并DataFrame数据
需要将两个DataFrame进行横向拼接: 对 A_DataFrame 拼接一列数据: 数据样例如下: 将右侧source_df中的 “$factor” 列拼接到左侧qlib_df中,但左侧数据是分钟 ...
- CNI portmap插件实现源码分析
DNAT创建的iptables规则如下:(重写目的IP和端口) PREROUTING, OUTPUT: --dst-type local -j CNI-HOSTPORT_DNAT // PREROU ...
- JavaScript-4.2函数,变量作用域---ShinePans
<html> <head> <meta http-equiv="content-type" content="text/html;chars ...
- python 各种魔法方法
目录 自定义序列 反射
- [转]Asp.net MVC 中Ajax的使用
Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.而这点对于Ajax的应有来说 ...
- Java集合(4):Iterator(迭代器)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单, ...
- JQuery Ajax调用WCF实例以及遇到的问题
1.遇到的最多的问题就是跨域问题,这个时间需要我们添加如下代码解决跨域的问题 第一步:在服务类加Attribute [AspNetCompatibilityRequirements(Requireme ...
- JavaScript:隐藏Url中的参数
<script type="text/javascript"> function submitForm(url, data) { var eleForm = docum ...
- shell文件安全与权限 笔记
主要学习: 文件盒目录的权限 Setuid Chown和chgrp Umask 连接符号 一个文件已经创建,就具有三种访问方式 读,可以显示该文件的内容 写,可以编辑或删除它 执行,如果该文件时一个s ...