您的位置:首页 > 移动开发 > IOS开发

[iOS]列表已读/文章收藏

2016-03-30 15:46 501 查看
[iOS]列表已读/文章收藏


Demo:http://download.csdn.net/detail/u012881779/9476772


收藏

#import "FavManager.h"
#import "BaseDB.h"
#import "SBJson.h"

@implementation FavManager

- (void)addToFavarite:(NSDictionary *)dic FavType:(FAVTYPE)favType{
NSDictionary *_dic=[NSDictionary dictionaryWithDictionary:dic];
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
//favtimestamp
[baseDB createTable:@"Favarites" columns:@"aid INTEGER PRIMARY KEY,json text,favType integer,dateTime text"];
NSMutableArray *arr=[NSMutableArray arrayWithObjects:
[_dic objectForKey:@"id"]==NULL?[_dic objectForKey:@"gid"]:[_dic objectForKey:@"id"],
[_dic JSONRepresentation],
[NSNumber numberWithInt:favType],[NSString stringWithFormat:@"%.f",[[NSDate date] timeIntervalSince1970]], nil];

[baseDB insertTableValues:@"Favarites" values:arr];
[baseDB closeDB];
[baseDB release];
}

- (BOOL)hasFavarited:(NSString *)aid{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
NSInteger i = [[baseDB selectForColumn:@"aid" value:aid tableName:@"Favarites"] count];
[baseDB closeDB];
[baseDB release];

return i>0?YES:NO;
}

- (NSArray *)fetchFavariteList:(FAVTYPE)favType{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
NSMutableArray *listArray=[NSMutableArray array];
NSArray *temp=[NSArray array];
temp=[baseDB selectSequence:[NSString stringWithFormat:@"SELECT * FROM Favarites WHERE favType=%d order by dateTime desc",favType]];

for (int i = 0 ; i<[temp count]; i++) {
NSDictionary *dic = [[[temp objectAtIndex:i] objectForKey:@"json"] JSONValue];
NSMutableDictionary *mDict = [dic mutableCopy];
[mDict setObject:[NSString stringWithFormat:@"%d",favType] forKey:@"favtype"];
[mDict setObject:[[temp objectAtIndex:i] objectForKey:@"dateTime"] forKey:@"dateTime"];
[listArray addObject:mDict];
[mDict release];
}

[baseDB closeDB];
[baseDB release];

return listArray;
}

- (void)deleteFromFavarite:(NSString *)aid{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
[baseDB deleteForColumn:@"aid" value:aid tableName:@"Favarites"];
[baseDB closeDB];
[baseDB release];
}

- (void)clearFavarites{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
[baseDB deleteAll:@"Favarites"];
[baseDB closeDB];
[baseDB release];
}

//收藏已读、未读
+ (void)setRead:(NSString *)aid{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
if (![baseDB tableExists:@"ListStatus"]) {
[baseDB createTable:@"ListStatus" columns:@"aid INTEGER PRIMARY KEY"];
}
[baseDB executeSQL:[NSString stringWithFormat:@"INSERT INTO ListStatus VALUES(%@)",aid]];
[baseDB closeDB];
[baseDB release];
}

+ (BOOL)hasRead:(NSString *)aid{
BaseDB *baseDB=[[BaseDB alloc] init];
[baseDB openDB];
NSInteger i=[[baseDB selectForColumn:@"aid" value:aid tableName:@"ListStatus"] count];
[baseDB closeDB];
[baseDB release];
return i > 0?YES:NO;
}

@end
 

数据库

#import "BaseDB.h"
#import <Foundation/Foundation.h>
#import "FMDatabase.h"
#import "FMDatabaseAdditions.h"
#import "FMResultSet.h"

@interface BaseDB : NSObject{
    FMDatabase *fmdb;
}

@implementation BaseDB
@synthesize fmdb;

- (void)dealloc{
self.fmdb = nil;
[super dealloc];
}

-(void)openDB{
NSString *documentsDirectory =NSHomeDirectory();
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"/Library/Caches/Caches.db"];
NSFileManager *fileManager=[[NSFileManager alloc] init];
if ([fileManager fileExistsAtPath:path]) {
fmdb=[[FMDatabase alloc] initWithPath:path];
if ([fmdb open]) {
}

}else{
fmdb=[[FMDatabase alloc] initWithPath:path];
if ([fmdb open]) {
NSLog(@"创建了数据库并打开数据库成功!");
}
}
[fileManager release];
}

-(void)openDBMS{
NSString *documentsDirectory =NSHomeDirectory();
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"/Library/Dbms"];
NSFileManager *fileManager=[[NSFileManager alloc] init];
if(![fileManager fileExistsAtPath:path])
{
[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
}
NSString *filePath = [path stringByAppendingFormat:@"/Dbms.db"];

if ([fileManager fileExistsAtPath:filePath]) {
fmdb=[[FMDatabase alloc] initWithPath:filePath];
if ([fmdb open]) {
}

}else{
fmdb=[[FMDatabase alloc] initWithPath:filePath];
if ([fmdb open]) {
NSLog(@"创建了数据库并打开数据库成功!");
}
}
[fileManager release];
}

-(BOOL) tableExists:(NSString *)tableName{
return [fmdb tableExists:tableName];
}

-(void)deleteAll:(NSString *)tableName{
NSString *sql=[NSString stringWithFormat:@"DELETE FROM %@",tableName];
[fmdb executeUpdate:sql];
}

-(void) deleteForColumn:(NSString *)columnName value:(NSString *)v tableName:(NSString *)name{
NSString *sql=[NSString stringWithFormat:@"DELETE FROM %@ WHERE %@='%@'",name,columnName,v];
NSLog(@"%@",sql);
[fmdb executeUpdate:sql];
}

- (void)deleteSQLString:(NSString *)condition tableName:(NSString *)name{
NSString *sql=[NSString stringWithFormat:@"DELETE FROM %@ WHERE %@",name,condition];

[fmdb executeUpdate:sql];
}

-(void)createTable:(NSString *)tableName columns:(NSString *)columnsName{
NSString *sql=[NSString stringWithFormat:@"CREATE TABLE %@ (%@)",tableName,columnsName];
[fmdb executeUpdate:sql];
}

-(void)insertTableValues:(NSString *)tableName values:(NSMutableArray *)Values{
NSMutableString *sql=[[NSMutableString alloc] init];
NSMutableArray *tempArray=[[NSMutableArray alloc] initWithArray:Values];
[sql appendFormat:@"INSERT INTO %@ VALUES(",tableName];
for (int i=0; i<[Values count]; i++) {
if (i==[Values count]-1) {
[sql appendFormat:@"?)"];
}else{
[sql appendFormat:@"?,"];
}

}
[fmdb executeUpdate:sql withArgumentsInArray:tempArray];
[sql release];
[tempArray release];
}

- (void)executeSQL:(NSString *)sql{
[fmdb executeUpdate:sql];
}

-(NSMutableArray *)selectAll:(NSString *)tableName{
NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@",tableName];
FMResultSet *rs=[fmdb executeQuery:sql];
NSMutableArray *list=[[NSMutableArray alloc] init];

while ([rs next]) {
NSMutableDictionary *temp=[[NSMutableDictionary alloc] init];
for (int i=0; i<[rs columnCount]; i++) {
[temp addEntriesFromDictionary:[NSDictionary
dictionaryWithObject:[rs stringForColumn:[rs columnNameForIndex:i]]
forKey:[rs columnNameForIndex:i]]];
}
[list addObject:temp];
[temp release];
}

return [list autorelease];
}

-(NSMutableArray *)selectForColumn:(NSString *)columnName value:(NSString *)v tableName:(NSString *)name{
NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@='%@'",name,columnName,v];
FMResultSet *rs=[fmdb executeQuery:sql];
NSMutableArray *list=[[NSMutableArray alloc] init];

while ([rs next]) {
NSMutableDictionary *temp=[[NSMutableDictionary alloc] init];
for (int i=0; i<[rs columnCount]; i++) {
[temp addEntriesFromDictionary:[NSDictionary
dictionaryWithObject:[rs stringForColumn:[rs columnNameForIndex:i]]
forKey:[rs columnNameForIndex:i]]];
}
[list addObject:temp];
[temp release];
}

return [list autorelease];
}

-(NSMutableArray *) selectForNotColumn:(NSString *)columnName value:(NSString *)v tableName:(NSString *)name{
NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@!='%@'",name,columnName,v];
FMResultSet *rs=[fmdb executeQuery:sql];
NSMutableArray *list=[[NSMutableArray alloc] init];

while ([rs next]) {
NSMutableDictionary *temp=[[NSMutableDictionary alloc] init];
for (int i=0; i<[rs columnCount]; i++) {
[temp addEntriesFromDictionary:[NSDictionary
dictionaryWithObject:[rs stringForColumn:[rs columnNameForIndex:i]]
forKey:[rs columnNameForIndex:i]]];
}
[list addObject:temp];
[temp release];
}

return [list autorelease] ;
}

-(void)updateForColumn:(NSString *)columnName value:(NSString *)v tableName:(NSString *)name whereColumn:(NSString *)where whereValue:(NSString *)whereV{
NSString *sql=[NSString stringWithFormat:@"UPDATE %@ SET %@='%@' WHERE %@='%@'",name,columnName,v,where,whereV];
[fmdb executeUpdate:sql];
}

-(NSMutableArray *)selectSequence:(NSString *)sql{
NSLog(@"SQL:%@",sql);
FMResultSet *rs=[fmdb executeQuery:sql];

NSMutableArray *list=[[NSMutableArray alloc] init];

while ([rs next]) {
NSMutableDictionary *temp=[[NSMutableDictionary alloc] init];
for (int i=0; i<[rs columnCount]; i++) {
[temp addEntriesFromDictionary:[NSDictionary
dictionaryWithObject:[rs stringForColumn:[rs columnNameForIndex:i]]
forKey:[rs columnNameForIndex:i]]];

}
[list addObject:temp];
[temp release];
}

return [list autorelease];
}

@end
 

示意图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: