OC-todolist项目

Todo List与数据库管理的高效实现
本文详细阐述了如何使用Objective-C语言结合基础数据结构和面向对象编程思想,实现了一个简单但功能全面的待办事项(Todo List)管理器,并进一步将其与数据库进行集成,实现了数据的持久化存储与检索。通过自定义类结构和方法,不仅提高了代码的可读性和可维护性,还确保了数据的安全性和一致性。此外,文章还介绍了如何利用数据库管理系统的特性,如事务处理和索引优化,来提升应用的整体性能。

//

// Todo.h

// todolist

//

// Created by zz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Todo : NSObject


{

NSString* subject;//主题

NSString* description;//描述

int priority;//优先级

NSDate* date;//日期


}


@property(nonatomic,copy)NSString* subject;

@property(nonatomic,copy)NSString* description;

@property(nonatomic,assign)int priority;

@property(nonatomic,copy)NSDate* date;

-(id)initwithsubject:(NSString*)_subject description:(NSString*)_description priority:(int)_priority date:(NSString*)_date;

-(void)setsubject:(NSString*)_subject;

-(void)setdescription:(NSString*)_description;

-(void)setpriority:(int)_priority;

-(void)SetDate:(NSDate*)_date;

-(void)dealloc;


- (NSString*)description;


@end




//

// Todo.m

// todolist

//

// Created by zz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import "Todo.h"


@implementation Todo


@synthesize subject;

@synthesize description;

@synthesize priority;

@synthesize date;



-(id)initwithsubject:(NSString*)_subject description:(NSString*)_description priority:(int)_priority date:(NSString*)_date{

if(!_subject||!_description||_priority<0||!_date){

[self release];

return nil;

}

self=[super init];

if(!self){

return nil;

}

subject=[NSString stringWithString:_subject];

description=[NSString stringWithString:_description];

priority=_priority;

NSDateFormatter * dm = [[NSDateFormatter alloc]init];

[dm setDateFormat:@"yyyy-MM-dd"];

date = [dm dateFromString:_date];

return self;



}

-(void)setsubject:(NSString*)_subject{


subject=[NSString stringWithString:_subject];


}

-(void)setdescription:(NSString*)_description{

description=[NSString stringWithString:_description];

}

-(void)setpriority:(int)_priority{

priority=_priority;

}

-(void)SetDate:(NSDate*)_date{

date=[_date copy];

}

-(void)dealloc{


[super dealloc];


}



- (NSString*)description{


NSString* ns=[[NSString alloc]initWithFormat:@"subject is %@, description is %@, priority is %d,date is %@",subject,description,priority,date];


return ns;

}


@end




//

// Dolist.h

// todolist

//

// Created byzz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import <Foundation/Foundation.h>


@class Todo;


@interface Dolist : NSObject


{

NSMutableArray* todoarray;

}


@property(nonatomic,copy)NSMutableArray* todoarray;

-(id)init;

-(void)Addtodo:(Todo*)atodo;

-(void)Removetodo:(NSInteger)index;

-(Todo *)todoatindex:(NSInteger)index;

-(NSUInteger)Count;

-(void)dealloc;

-(NSString*)description;

@end






//

// Dolist.m

// todolist

//

// Created by zz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import "Dolist.h"

#import "Todo.h"

@implementation Dolist


@synthesize todoarray;


-(id)init{


self=[super init];

if(!self){

return nil;

}

todoarray=[[NSMutableArray alloc]init];

return self;


}

-(void)Addtodo:(Todo*)atodo{


[todoarray addObject:atodo];


}

-(void)Removetodo:(NSInteger)index{

[todoarray removeObjectAtIndex:index];


}

-(Todo *)todoatindex:(NSInteger)index{


return [todoarray objectAtIndex:index];

}

-(NSUInteger)Count{


return [todoarray count];

}

-(void)dealloc{


[super dealloc];


}


-(NSString*)description{


NSMutableString* ns=[[NSMutableString alloc]init];

for(id item in todoarray){

[ns appendFormat:@"%@\n",item];

}

return ns;

}


@end




//

// TodoDb.h

// todolist

//

// Created by zz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import <Foundation/Foundation.h>

@class Dolist;

@class Todo;

@interface TodoDb : NSObject <NSCoding>


{

NSString* filename;

Dolist* todolist;


}


@property(nonatomic,copy)NSString* filename;

@property(nonatomic,copy)Dolist* todolist;

-(id)initwithfilename:(NSString*)filename;

-(void)Addtodo:(Todo*)atodo;

-(void)Removetodo:(NSInteger)index;

-(Todo *)todoatindex:(NSInteger)index;

-(NSUInteger)TodoDBCount;

-(void)dealloc;

-(void)save;

-(void)read;

-(NSString*)description;


-(void)encodeWithCoder:(NSCoder *)aCoder;

-(id)initWithCoder:(NSCoder *)aDecoder;


@end






//

// TodoDb.m

// todolist

//

// Created by zz

// Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import "TodoDb.h"

#import "Todo.h"

#import "Dolist.h"


@implementation TodoDb


@synthesize filename;

@synthesize todolist;



-(id)initwithfilename:(NSString*)_filename{


if(!_filename){

[self release];

return nil;

}

self.filename=[NSString stringWithString:_filename];

todolist=[[Dolist alloc]init];

return self;


}

-(void)Addtodo:(Todo*)atodo{

[todolist Addtodo:atodo];


}

-(void)Removetodo:(NSInteger)index{


[todolist Removetodo:index];


}

-(Todo *)todoatindex:(NSInteger)index{


return [todolist todoatindex:index];


}

-(NSUInteger)TodoDBCount{


return [todolist Count];

}

-(void)dealloc{


[super dealloc];

}

-(void)save{


[NSKeyedArchiver archiveRootObject:[self description] toFile:filename];


}

-(void)read{


todolist= [NSKeyedUnarchiver unarchiveObjectWithFile:filename];


NSLog(@"%@",todolist);

}


-(NSString*)description{


NSString* ns=[[NSString alloc]initWithFormat:@"%@",todolist];

return ns;

}


-(void)encodeWithCoder:(NSCoder *)aCoder{


[aCoder encodeObject:todolist forKey:@"todolist"];

[aCoder encodeObject: filename forKey:@"filename"];

}

-(id)initWithCoder:(NSCoder *)aDecoder{


if((self=[super init])){

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

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

}

return self;



}


@end






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值