FMDB将对象放进数据库_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > FMDB将对象放进数据库

FMDB将对象放进数据库

 2015/3/17 14:52:02  罕见  程序员俱乐部  我要评论(0)
  • 摘要:首先建立一个HJShop类,实现NSCoding协议#import<Foundation/Foundation.h>@interfaceHJShop:NSObject<NSCoding>@property(nonatomic,copy)NSString*name;@property(nonatomic,assign)doubleprice;@end#import"HJShop.h"@implementationHJShop-(void)encodeWithCoder:
  • 标签:数据库 数据

首先建立一个HJShop类,实现NSCoding协议

#import <Foundation/Foundation.h>


@interface HJShop : NSObject<NSCoding>

@property (nonatomic, copy)NSString *name;

@property (nonatomic, assign)double price;

@end

 #import "HJShop.h"


@implementation HJShop


- (void)encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeDouble:self.price forKey:@"price"];

}


- (id)initWithCoder:(NSCoder *)aDecoder

{

    if (self = [super init]) {

        self.name = [aDecoder decodeObjectForKey:@"name"];

        self.price = [aDecoder decodeDoubleForKey:@"price"];

    }

    return self;

}


- (NSString *)description

{

    return [NSString stringWithFormat:@"%@ - %f", self.name, self.price];

}

@end

 -----------------------------------------------------

然后使用FMDB框架

     //初始化

    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shop.sqlite"];

    self.db = [FMDatabase databaseWithPath:path];

    [self.db open];

    

    //创表

    [self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, shop blob NOT NULL UNIQUE);"];

    [self addShops];

    [self readShop];

 

- (void)addShops

{

    HJShop *shop = [[HJShop alloc] init];

    shop.name = @"jack";

    shop.price = 11.0;

    

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:shop];

    [self.db executeUpdateWithFormat:@"INSERT OR IGNORE INTO t_shop(shop) VALUES (%@);", data];

}


- (void)readShop

{

    FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop;"];

    while (set.next) {

        NSData *data = [set objectForColumnName:@"shop"];

        HJShop *shop = [NSKeyedUnarchiver unarchiveObjectWithData:data];

        NSLog(@"%@", shop);

    }

} 

只要把对象encoding成二进制文件,就可以放进SQLite中去了 

发表评论
用户名: 匿名