使用sqlite可以实现简单的收藏夹功能,不多说直接上代码。
1.首先导入libsqlite3.0.dylib,libz.dylib两个类库
2.封装一个NSObject类型的类去管理 (即写sql语句)
在这个类里首先导入一个头文件和你建好的model类 (实现收藏本质是存model类)
model类只是建立需要的字符串(我只写了.h .m里什么都没写)
#import <Foundation/Foundation.h>
@interface TopicDB : NSObject
@property(nonatomic,retain)NSString *topic_id;
)NSString *topic_title;
)NSString *topic_name;
)NSString *topic_image;
@end
.h里声明相应方法,导入相应头文件
#import <sqlite3.h>
@H_404_110@
#import "TopicDB.h"//我的那个model类
+(void)open;
+ (void)close;
+(void)create;
+ (void)insert:(TopicDB *)mymodel;
+ (void)remove:(TopicDB *)mymodel;
+ (void)update;
+ (NSArray *)select;
#import "DataBaseManager.h"
static sqlite3 *dbPoint = nil;
@implementation DataBaseManager
+ (void)open
{
if (dbPoint) {
return;
}
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];
path = [path stringByAppendingPathComponent:@"travel_Topic.rdb"];
NSLog(@"%@",path);
int result = sqlite3_open(path.UTF8String,&dbPoint);
if (result == sqlITE_OK) {
NSLog(@"数据库打开成功");
}
}
+ (void)close
{
sqlite3_close(dbPoint);
}
+ (void)create
{
[self open];
NSString *sql = @"create table travel_Topic (title text,name text,image text,id text)";
sqlite3_exec(dbPoint,sql.UTF8String,NULL,NULL);
}
+ (void)insert:(TopicDB *)mymodel
{
[self open];
NSString *sql = [NSString stringWithFormat:@"insert into travel_Topic values ('%@','%@','%@')",mymodel.topic_title,mymodel.topic_name,mymodel.topic_image,mymodel.topic_id];
sqlite3_exec(dbPoint,NULL);
}
+ (void)remove:(TopicDB *)mymodel
{
[self open];
NSString *sql = [NSString stringWithFormat:@"delete from travel_Topic where title = '%@'",mymodel.topic_title];
sqlite3_exec(dbPoint,NULL);
}
+ (void)update
{
[self create];
NSString *sql = @"update travel_Topic set name = '汲国兴250' where number = '250'";
sqlite3_exec(dbPoint,NULL);
}
+ (NSArray *)select
{
[self open];
sqlite3_stmt *stmt = nil;
NSString *sql = @"select * from travel_Topic";
//执行语句
int result = sqlite3_prepare_v2(dbPoint,-1,&stmt,NULL);
//判断是否成功
if (result == sqlITE_OK) {
NSMutableArray *arr = [NSMutableArray array];
//如果还有下一行
while (sqlite3_step(stmt) == sqlITE_ROW) {
//获取数据
const unsigned char * topic_title = sqlite3_column_text(stmt,0);
const unsigned char * topic_name = sqlite3_column_text(stmt,1);
const unsigned char * topic_image = sqlite3_column_text(stmt,2);
const unsigned char * topic_id = sqlite3_column_text(stmt,3);
//封装成model
TopicDB *mymodel = [[TopicDB alloc] init];
mymodel.topic_title = [NSString stringWithUTF8String:(const char *) topic_title];
mymodel.topic_name = [NSString stringWithUTF8String:(const char *) topic_name];
mymodel.topic_image = [NSString stringWithUTF8String:(const char *) topic_image];
mymodel.topic_id = [NSString stringWithUTF8String:(const char *) topic_id];
[arr addObject:mymodel];
}
sqlite3_finalize(stmt); //释放数据库替身
return arr;
}
sqlite3_finalize(stmt);
return [NSMutableArray array];
}
3.在所需的页面(标签4中的详情页)创建一个收藏按钮,编写一个点击事件的方法(将相应的信息存到model类里)-(void)collectionButton
{
@H_404_110@//创建数据库@H_404_110@ 数据库内同一个表不会叠加@H_404_110@ 所以放心建。
[DataBaseManager create];
//初始化model类存所需数据
TopicDB *model = [[TopicDB alloc]init];
model.topic_title = _str2;
model.topic_name = _str1;
model.topic_image = _str;
model.topic_id = [NSString stringWithFormat:@"%lu",_Travel_Topic_Sub_Id];
//alert提示框
_alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"已收藏