FMDB將對象放進資料庫,fmdb對象資料庫

來源:互聯網
上載者:User

FMDB將對象放進資料庫,fmdb對象資料庫

首先建立一個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中去了 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.