您的位置:首页 > 编程语言

iphone 应用学习所有代码

2014-08-29 19:58 183 查看
第十七天:网络连接

//

// ShowViewController.m

// ASILastDay

//

// Created by Student on 8/22/14.

// Copyright (c) 2014 Student. All rights reserved.

//

#import "ShowViewController.h"

#import "ASIHTTPRequest.h"

#import "JSON.h"

#import "ASIFormDataRequest.h"

#import "MBProgressHUD.h"

#import "UIDevice-Reachability.h"

#define URL @"http://210.51.165.101/1qaz2wsx3edc/MInterface/BLogin.php?v_mid=10001&v_uname=Xiaxind1&v_pass=123456&v_signMsg=5302201A16F016C0D0697B470263D452"

#define ZHUCEURL @"http://192.168.10.81:8080/service/registeruser"

#define DENGLUURL @"http://192.168.10.81:8080/service/userlogin"

#define WENZISHANGCHUANURL @"http://192.168.10.81:8080/service/uploadusernote?user_name=caoyang"

#define WENZIBIJIXIAZAIURL @"http://192.168.10.81:8080/service/downloadusernote?user_name=caoyang"

#define GETIMAGEID @"http://192.168.10.81:8080/service/startimagenotesync?user_name=caoyang"

#define SHANGCHUANTUPIANBIJIURL @"http://192.168.10.81:8080/service/uploaduserimagenote?user_name=caoyang"

#define XIAZAITUPIANBIJI @"http://192.168.10.81:8080/service/downloaduserimagenote?user_name=caoyang"

@interface ShowViewController ()<ASIHTTPRequestDelegate>

{

NSOperationQueue* queue;

NSString* strID;

}

@end

@implementation ShowViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[self ASI1]; //调用同步请求方法

//[self ASI2]; //调用异步请求方法

//[self ASI3]; //队列请求方法

//[self postASI4]; //提交表单

}

//同步读取

-(void)ASI1

{

//下载图片笔记

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

//表单 与 post

NSURL *url=[NSURL URLWithString:XIAZAITUPIANBIJI];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1005];

[request setDelegate:self];

[request startAsynchronous];

/*

//http与get

/*

同步上传方法

//直接上传

NSURL *url = [NSURL URLWithString:GETIMAGEID];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request startSynchronous];

*/

/*

异步上传方法 有一个代理

NSURL *url = [NSURL URLWithString:GETIMAGEID];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request startSynchronous];

NSError *error = [request error];

if (!error)

{

//上传图片笔记

NSRange str = [[request responseString] rangeOfString:@"<sync_id>"];

NSRange str1 = [[request responseString] rangeOfString:@"</sync_id>"];

if(str.location!=NSNotFound)

{

strID = [[request responseString] substringWithRange:NSMakeRange(str.location+9,str1.location-str.location-9)];

NSLog(@"...%@",strID);

//上传图片笔记

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

NSURL *url=[NSURL URLWithString:SHANGCHUANTUPIANBIJIURL];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1002];

[request setPostValue:strID forKey:@"sync_id"];//回调值

[request setPostValue:@"1" forKey:@"image_id"];//图片名字唯一标示

[request setPostValue:@"asdfasdf" forKey:@"image_note"];

NSString* strPath = [[NSBundle mainBundle]pathForResource:@"AA" ofType:@"png"];

[request setFile:strPath forKey:@"file"];

[request setDelegate:self];

[request startAsynchronous];

}

//NSString *response = [request responseString];

//NSDictionary * jsonDic = (NSDictionary*)[response JSONValue];

//NSString* str = [jsonDic objectForKey:@"v_mid"];

//NSLog(@"...%@",str);

}

*/

//登录

/*

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

NSURL *url=[NSURL URLWithString:DENGLUURL];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1002];

//注册

[request setPostValue:@"caoyang" forKey:@"user_name"];

[request setPostValue:@"password" forKey:@"user_password"];

[request setDelegate:self];

[request startAsynchronous];

*/

//上传文字笔记

/*

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

NSURL *url=[NSURL URLWithString:WENZISHANGCHUANURL];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1002];

NSMutableString* stringData = [NSMutableString stringWithString:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"];

[stringData appendString:@"asdf"];

[stringData appendString:@"\t\t<item>\n"];

[stringData appendString:@"\t\t\t<title>"];

[stringData appendString:@"1234567890"];

[stringData appendString:@"</title>"];

NSMutableData* xmlData = [[stringData dataUsingEncoding:NSUTF8StringEncoding]mutableCopy];

[request setPostBody:xmlData];

[request setDelegate:self];

[request startAsynchronous];

*/

//下载文字笔记

/*

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

NSURL *url=[NSURL URLWithString:WENZIBIJIXIAZAIURL];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1002];

[request setDelegate:self];

[request startAsynchronous];

*/

}

//异步读取

-(void)ASI2

{

/*

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(150, 200);

mbp.labelText = @" 请求中... ";

//for(int i=0;i<50;i++)

//{

NSURL *url = [NSURL URLWithString:URL];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request setDelegate:self];

[request setTimeOutSeconds:20.0f];

[request setShouldContinueWhenAppEntersBackground:YES ];//后台请求

[request setTag:1001];

[request startAsynchronous];

//}*/

}

- (void)requestFinished:(ASIHTTPRequest *)request

{

[MBProgressHUD hideHUDForView:[[UIApplication sharedApplication].delegate window] animated:YES];

if(![UIDevice networkAvailable])

{

NSLog(@"网络不可用!");

}

else

{

if(request.tag==1001)

{

// 当以文本形式读取返回内容时用这个方法

NSString *responseString = [request responseString];

NSDictionary * jsonDic = (NSDictionary*)[responseString JSONValue];

NSString* str = [jsonDic objectForKey:@"v_mid"];

NSLog(@"...%@",str);

// 当以二进制形式读取返回内容时用这个方法

//NSData *responseData = [request responseData];

}

else if(request.tag==1002)

{

NSLog(@"....%@",[request responseString]);

}

else if(request.tag==1005)

{

NSLog(@"....%@",[request responseString]);

}

}

}

- (void)requestFailed:(ASIHTTPRequest *)request

{

[MBProgressHUD hideHUDForView:[[UIApplication sharedApplication].delegate window] animated:YES];

NSError* error = [request error];

NSLog(@"%@",error);

}

//队列请求 一个一个的下载或上传

-(void)ASI3

{

queue = [[[NSOperationQueue alloc]init]autorelease];

[queue setMaxConcurrentOperationCount:1];

for(int i=0;i<10;i++)

{

NSURL *url = [NSURL URLWithString:URL];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request setTag:1005];

[request setDelegate:self];

[request setDidFinishSelector:@selector(requestDone:)];

[request setDidFailSelector:@selector(requestWentWrong:)];

[queue addOperation:request];

[request cancel];

}

}

-(void)requestDone:(ASIHTTPRequest*)request

{

NSString *responseString = [request responseString];

NSDictionary * jsonDic = (NSDictionary*)[responseString JSONValue];

NSString* str = [jsonDic objectForKey:@"v_mid"];

NSLog(@"...%@",str);

}

-(void)requestWentWrong:(ASIHTTPRequest*)request

{

NSError* error = [request error];

NSLog(@">>>>>%@",error);

}

//注册

-(void)postASI4

{

MBProgressHUD *mbp = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].delegate window] animated:YES];

mbp.center=CGPointMake(160, 200);

mbp.labelText = @"发送中";

NSURL *url=[NSURL URLWithString:ZHUCEURL];

ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];

[request setRequestMethod:@"POST"];

[request setTag:1002];

//注册

[request setPostValue:@"caoyang" forKey:@"user_name"];

[request setPostValue:@"password" forKey:@"user_password"];

/*

//上传文件保存路径

[request addFile:@"图片路径" withFileName:@"image.png" andContentType:@"png" forKey:@"myFile"];

[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];

[request addData:@"把图片转换成data" withFileName:@"george.jpg" andContentType:@"image/jpeg"forKey:@"photos"];

*/

[request setDelegate:self];

[request startAsynchronous];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第十六天:

数据库的封装源码:

#import "AA.h"

@implementation AA

//打开数据库

+(void)OpenDB

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"MyData.db"];

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

delegate.dbs = [FMDatabase databaseWithPath:writableDBPath]; //创建并打开FMDB

if (![delegate.dbs open])

{

NSLog(@"Could not open db.");

}

else

{

NSLog(@"Can open db.");

}

}

//建表

+(void)creatTable

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

[delegate.dbs executeUpdate:@"CREATE TABLE Person (name , passWord)"];

// [dbs executeUpdate:@"CREATE TABLE Per(name, passWord)"];

if([delegate.dbs hadError])

{

NSLog(@" 表创建失败");

}

else

{

NSLog(@"表创建成功");

}

}

//查询所有数据

+(void)Select

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

FMResultSet *rs = [delegate.dbs executeQuery:@"SELECT * FROM Person"];

while ([rs next])

{

NSString *name = [rs stringForColumn:@"name"];

NSString* passWord = [rs stringForColumn:@"passWord"];

NSLog(@"name = %@ , PassWors = %@",name,passWord);

}

[rs close];

}

//往表中插入数据

+(void)InsertName:(NSString*)name andPassWord:(NSString*)passWord

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

[delegate.dbs executeUpdate:@"INSERT INTO Person (name,passWord) VALUES ( ? , ? )",name,passWord];

if ([delegate.dbs hadError])

{

NSLog(@"Err: %@", [delegate.dbs lastErrorMessage]);

}

else

{

NSLog(@"插入数据成功");

}

}

//修改数据 更新

+(void)UpdateName:(NSString*)name WithPassWord:(NSString*)passWord

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

[delegate.dbs executeUpdate:@"UPDATE Person SET passWord = ? WHERE name = ?",passWord,name];

}

//删除部分数据

+(void)DeleteUserWithName:(NSString*)name

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

[delegate.dbs executeUpdate:@"DELETE FROM Person Where name = ?",name];

}

//删除所有数据 删除表

+(void)DeleteAllUser

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

// NSString* sqlstr = [NSString stringWithFormat:@"delete from Person"]; //删除所有数据,表还存在

NSString *sqlstr = [NSString stringWithFormat:@"DROP TABLE Person"]; //删除表

if (![delegate.dbs executeUpdate:sqlstr])

{

NSLog(@"Delete table error!");

}

else

{

NSLog(@" SUCESS !!");

}

}

//关闭数据库

+(void)CloseDB

{

AppDelegate *delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];

[delegate.dbs close];

}

@end

第十五天

(1)socket(客户端)

#import <UIKit/UIKit.h>

//#import <CFNetwork/CFNetwork.h>

#import "AsyncSocket.h"

#define SRV_CONNECT_FAIT 0

#define SRV_CONNECT_SUC 1

#define SRV_CONNECTED 2

//#define HOST_IP @"192.168.4.115"

#define HOST_IP @"192.168.4.117"

#define HOST_POST 8080

@interface SocketViewController : UIViewController<AsyncSocketDelegate>

{

}

@property(nonatomic,strong)AsyncSocket *client;

@end

#import "SocketViewController.h"

@interface SocketViewController ()

@end

@implementation SocketViewController

@synthesize client;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

[self connectServe:HOST_IP port:HOST_POST];

[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(send) userInfo:nil repeats:YES];

}

//1.调用链接服务器 已经成功了

-(int)connectServe:(NSString *)hostIP port:(int)hostport

{

NSLog(@"connectServe:(NSString *)hostIP port:(int)hostport");

if(!client)

{

//self这个参数是必须得

client=[[AsyncSocket alloc]initWithDelegate:self];

NSError *error=nil;

if([client connectToHost:hostIP onPort:hostport error:&error])

{

NSLog(@"成功!");

return 1;

}

else

{

NSLog(@"%ld %@",(long)[error code],[error localizedDescription]);

return SRV_CONNECT_FAIT;

}

//if([client connectedHost])

}

else

{

[client readDataWithTimeout:-1 tag:0];

return SRV_CONNECTED;

}

}

//2、发送send

-(void)send

{

NSLog(@"send");

if(!client){

[self showMessage:@"sorry client faulat"];

}else{

NSString *inputMsgStr=@"ddd";

NSString *content=[inputMsgStr stringByAppendingString:@"\r\n"];

NSLog(@"%@",content);

NSData *data=[content dataUsingEncoding:NSUTF8StringEncoding];

[client writeData:data withTimeout:-1 tag:3];

}

}

- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err

{

NSLog(@"willDisconnectWithError");

NSLog(@"error");

}

- (void)onSocketDidDisconnect:(AsyncSocket *)sock

{

NSString *msg=@"sorry this connect is fault";

[self showMessage:msg];

client=nil;

}

-(void)showMessage:(NSString *)s

{

UIAlertView *a=[[UIAlertView alloc]initWithTitle:@"提示" message:s delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

[a show];

}

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port

{

[self showMessage:[NSString stringWithFormat:@"连接成功\n %@ %d",host,port]];

//继续监听

[client readDataWithTimeout:-1 tag:4];

}

//当socket已完成所要求的数据读入内存时调用,有错误不调用

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

NSString *astr=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"receiver data is-----%@",astr);

[astr release];

//继续监听,递归调用

[client readDataWithTimeout:-1 tag:5];

}

(2)服务器端

#import <Cocoa/Cocoa.h>

#import "AsyncSocket.h"

#define HOST_CLIENT_PORT 8080

@interface AppDelegate : NSObject <NSApplicationDelegate,AsyncSocketDelegate>

{

AsyncSocket *socket;

AsyncSocket *acceptSocket;

}

@property (assign) IBOutlet NSWindow *window;

@property(assign) NSText *clientMessage;

@property(assign) NSText *readText;

@end

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

// Insert code here to initialize your application

socket=[[AsyncSocket alloc]initWithDelegate:self];

NSError *error=nil;

if([socket acceptOnPort:HOST_CLIENT_PORT error:&error])

{

NSLog(@"accept ok!");

}

else

{

NSLog(@"fault!");

NSLog(@"%@",error);

return;

}

acceptSocket=[[AsyncSocket alloc]initWithDelegate:self];

[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(AAA) userInfo:nil repeats:YES];

}

-(void)AAA

{

NSData *acceptData=[@"没问题哈 嘘嘘哥!" dataUsingEncoding:NSUTF8StringEncoding];

[acceptSocket writeData:acceptData withTimeout:-1 tag:0];

}

//当产生一个socket去处理连接时调用 次方法会返回

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket

{

NSLog(@"new socket!");

acceptSocket=[newSocket retain];

}

//开启监听,当socket链接成功后,正准备读和写得时候调用, host属性是IP一个地址,而不是一个DNS名称

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port

{

NSLog(@"客户端与服务器连接成功!");

[acceptSocket readDataWithTimeout:-1 tag:1];

}

//连接成功,打开监听数据读取,如果不坚挺无法读取数据已经完成要求的数据读入内存时调用 如果错误不调用

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

NSLog(@"kefjwejfewfjeijfiejr,%lu",tag);

NSString *msg=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

// NSLog(@"%@",[@"client:" stringByAppendingString:@"%@",msg]);

NSLog(@"%@",[@"client:" stringByAppendingFormat:@"%@",msg]);

[acceptSocket readDataWithTimeout:-1 tag:2];

}

- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag

{

NSLog(@"didWriteDataWithTag:%lu",tag);

NSLog(@"thread(%@),onsocket:%p didWriteDataWithTag:%ld",[[NSThread currentThread] name],sock,tag);

}

第十四天

(1)网页下载一:

- (void)viewDidLoad

{

[super viewDidLoad];

imageview=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 200)];

[self.view addSubview:imageview];

NSThread *thread= [[NSThread alloc]initWithTarget:self selector:@selector(downIconImage:) object:KURL];

[thread start];

}

-(void)downIconImage:(NSString *)url

{

NSData *data=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:url]];

UIImage *img=[[UIImage alloc]initWithData:data];

if(img==nil)

{

NSLog(@"下载失败!");

}

else

{

[self performSelectorOnMainThread:@selector(updateUI:) withObject:img waitUntilDone:YES];

}

}

-(void)updateUI:(UIImage *)image

{

imageview.image=image;

}

(2)多线程

#import <UIKit/UIKit.h>

@interface AAViewController : UIViewController

{

int tickets;

int count;

NSThread *thread1;

NSThread *thread2;

NSThread *thread3;

NSCondition *condition;//锁

NSLock *lock1;//锁

}

@end

- (void)viewDidLoad

{

[super viewDidLoad];

tickets=100;

count=0;

lock1=[[NSLock alloc]init];

condition=[[NSCondition alloc]init];

thread1=[[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil];

[thread1 setName:@"thread-1"];

[thread1 start];

thread2=[[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil];

[thread2 setName:@"thread-2"];

[thread2 start];

thread3=[[NSThread alloc]initWithTarget:self selector:@selector(run3) object:nil];

[thread3 setName:@"thread-3"];

[thread3 start];

// Do any additional setup after loading the view.

}

-(void)run

{

while(TRUE)

{

[condition lock];

[condition wait];

[lock1 lock];

if(tickets>=0)

{

[NSThread sleepForTimeInterval:0.09];

count=100-tickets;

NSLog(@"当前%d 售出%d 县城名:%@",tickets,count,[[NSThread currentThread]name]);

tickets--;

}

else

{

break;

}

[lock1 unlock];

[condition unlock];

}

}

-(void)run3

{

while(YES)

{

[condition lock];

[NSThread sleepForTimeInterval:2];

[condition signal];

[condition unlock];

}

}

(3)多线程下载

- (void)viewDidLoad

{

[super viewDidLoad];

imageview=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 200)];

[self.view addSubview:imageview];

// NSThread *thread= [[NSThread alloc]initWithTarget:self selector:@selector(downIconImage:) object:KURL];

// [thread start];

NSInvocationOperation *operation=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downIconImage:) object:KURL];

NSOperationQueue *queue= [[NSOperationQueue alloc]init];

[queue addOperation:operation];

// Do any additional setup after loading the view.

}

-(void)downIconImage:(NSString *)url

{

NSData *data=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:url]];

UIImage *img=[[UIImage alloc]initWithData:data];

if(img==nil)

{

NSLog(@"下载失败!");

}

else

{

[self performSelectorOnMainThread:@selector(updateUI:) withObject:img waitUntilDone:YES];

}

}

-(void)updateUI:(UIImage *)image

{

imageview.image=image;

}

(4)多线程

- (void)viewDidLoad

{

[super viewDidLoad];

imageview=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 200)];

[self.view addSubview:imageview];

/*

//单任务

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

NSURL *url=[NSURL URLWithString:KURL];

NSData *data=[[NSData alloc]initWithContentsOfURL:url];

UIImage *img=[[UIImage alloc]initWithData:data];

if(data!=nil)

{

dispatch_async(dispatch_get_main_queue(), ^{

imageview.image=img;

});

}

});

*/

/*

//队列一

dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_group_t group=dispatch_group_create();

dispatch_group_async(group, queue, ^{

[NSThread sleepForTimeInterval:1];

NSLog(@"group1");

});

dispatch_group_async(group, queue, ^{

[NSThread sleepForTimeInterval:2];

NSLog(@"group2");

});

dispatch_group_async(group, queue, ^{

[NSThread sleepForTimeInterval:3];

NSLog(@"group3");

});

//队列执行结束发出一个通知

dispatch_group_notify(group, dispatch_get_main_queue(), ^{

NSLog(@"update");

});

dispatch_release(group);

*/

/*

//队列二

dispatch_queue_t queue=dispatch_queue_create("young",DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue, ^{

NSLog(@"dispath_asygn1");

});

dispatch_async(queue, ^{

NSLog(@"dispath_asygn2");

});

dispatch_async(queue, ^{

NSLog(@"dispath_asygn4");

});

dispatch_async(queue, ^{

NSLog(@"dispath_asygn5");

});

dispatch_async(queue, ^{

NSLog(@"dispath_asygn6");

});

//dispatch_barrier_async保证前面的先执行结束 保证dispath_asygn3后执行

dispatch_barrier_async(queue, ^{

NSLog(@"dispatch_barrier_async");

});

dispatch_async(queue, ^{

NSLog(@"dispath_asygn3");

});

*/

//队列三 循环执行 相当于for

dispatch_queue_t queue=dispatch_queue_create("young",DISPATCH_QUEUE_CONCURRENT);

dispatch_apply(5, queue, ^(size_t index){

NSLog(@"ergergerg");

});

}

第十三天

(1)KVO

- (void)viewDidLoad

{

[super viewDidLoad];

datas=[[Waker alloc]initwithAge:20 andName:@"liming"];

[datas addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];

UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn.frame=CGRectMake(120, 200, 100, 35);

btn.backgroundColor=[UIColor redColor];

[btn setTitle:@"增加5穗" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(btnpressed:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

ageLabel=[[UILabel alloc]initWithFrame:CGRectMake(40, 150, 200, 35)];

ageLabel.text=[NSString stringWithFormat:@"%@现在的年龄:%d",datas.name,datas.age];

ageLabel.backgroundColor=[UIColor grayColor];

[self.view addSubview:ageLabel];

[ageLabel release];

// Do any additional setup after loading the view.

}

-(void)btnpressed:(id)sender

{

datas.age +=5;

}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

{

ageLabel.text=[NSString stringWithFormat:@"%@现在的年龄:%d",datas.name,datas.age];

}

-(void)dealloc

{

[super dealloc];

[datas removeObserver:self forKeyPath:@"age"];

}

(2)本地推送

-(void)noti

{

NSString *strTime=@"2014-08-21 14:57:50";

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

[dateformator setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate *destDate=[dateformator dateFromString:strTime];

[dateformator release];

//创建一个本地推送

UILocalNotification *localNotification= [[UILocalNotification alloc]init];

if(!localNotification)

{

return;

}

[arrays addObject:localNotification];

localNotification.fireDate=destDate;

localNotification.alertBody=@"本地通知";

//提示

localNotification.alertAction=@"view";

//设置重复间隔

localNotification.repeatInterval=NSDayCalendarUnit;

//显示在icon上得红色数字

localNotification.applicationIconBadgeNumber=[arrays count];

//localNotification sound

//localNotification.soundName=@"<#string#>"//不能超过30秒

localNotification.soundName=UILocalNotificationDefaultSoundName;

//schedule安排

[[UIApplication sharedApplication]scheduleLocalNotification:localNotification];

[localNotification release];

//清空所有的提醒

}

第十二天 本地化

(1)

- (void)viewDidLoad

{

[super viewDidLoad];

datas=[[Waker alloc]initwithAge:20 andName:@"liming"];

[datas addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];

UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn.frame=CGRectMake(120, 200, 100, 35);

btn.backgroundColor=[UIColor redColor];

[btn setTitle:@"增加5穗" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(btnpressed:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

ageLabel=[[UILabel alloc]initWithFrame:CGRectMake(40, 150, 200, 35)];

ageLabel.text=[NSString stringWithFormat:@"%@现在的年龄:%d",datas.name,datas.age];

ageLabel.backgroundColor=[UIColor grayColor];

[self.view addSubview:ageLabel];

[ageLabel release];

// Do any additional setup after loading the view.

}

-(void)btnpressed:(id)sender

{

datas.age +=5;

}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

{

ageLabel.text=[NSString stringWithFormat:@"%@现在的年龄:%d",datas.name,datas.age];

}

-(void)dealloc

{

[super dealloc];

[datas removeObserver:self forKeyPath:@"age"];

}

#import "ShowViewController.h"

@interface ShowViewController ()

@end

@implementation ShowViewController

- (void)viewDidLoad

{

[super viewDidLoad];

NSString* strLabel = [NSString stringWithString:NSLocalizedString(@"welcome", nil)];

NSLog(@"...%@",strLabel);

NSString* strImage = [NSString stringWithString:NSLocalizedString(@"tupian", nil)];

NSLog(@"...%@",strImage);

UILabel* lala = [[UILabel alloc]init];

lala.frame = CGRectMake(0, 0, 320, 40);

[lala setText:strLabel];

[self.view addSubview:lala];

UIImageView* ima = [[UIImageView alloc]init];

ima.frame = CGRectMake(0, 50, 100, 100);

//[ima setImage:[UIImage imageNamed:strImage]];

[ima setImage:[UIImage imageNamed:@"ICON.png"]];

[self.view addSubview:ima];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(2)

#import "ShowViewController.h"

@interface ShowViewController ()<UIGestureRecognizerDelegate>

{

UIImageView* imageM;

}

@end

@implementation ShowViewController

- (void)viewDidLoad

{

[super viewDidLoad];

imageM = [[UIImageView alloc]init];

imageM.frame = CGRectMake(0, 0, 320, 460);

[imageM setImage:[UIImage imageNamed:@"A.png"]];

/*

当视图对象的userInteractionEnabled设置为NO的时候,用户触发的事件,如触摸,键盘等,将会被该视图忽略(其他视图照常响应),并且该视图对象也会从事件响应队列中被移除。 当userInteractionEnabled设为YES时,则事件可以正常的传递给该视图对象。 userInteractionEnabled的属性默认值就是YES。

ps:响应者链是能够响应事件的对象组成的链,事件在该链上传递,最终结果事件或被处理或被抛弃。所以一个对象在不在响应者链里是其能否响应事件的首要前提条件!

*/

imageM.userInteractionEnabled = YES;

[self.view addSubview:imageM];

/*

//1、创建手势实例,并连接方法handleTapGesture,点击手势

UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];

tapGesture.delegate = self;

//允许几个手指

tapGesture.numberOfTouchesRequired = 2;

//设置手势点击数,双击:点2下

tapGesture.numberOfTapsRequired=2;

// imageView添加手势识别

[self.view addGestureRecognizer:tapGesture];

//释放内存

[tapGesture release];

*/

/*

//2、手势为捏的姿势:按住option按钮配合鼠标来做这个动作在虚拟器上

UIPinchGestureRecognizer *pinchGesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinchGesture:)];

[imageM addGestureRecognizer:pinchGesture];//imageView添加手势识别

[pinchGesture release];

*/

/*

//3、旋转手势:按住option按钮配合鼠标来做这个动作在虚拟器上

UIRotationGestureRecognizer *rotateGesture=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotateGesture:)];

[imageM addGestureRecognizer:rotateGesture];

[rotateGesture release];

*/

/*

//4、拖手势

UIPanGestureRecognizer *panGesture=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanGesture:)];

[imageM addGestureRecognizer:panGesture];

[panGesture release];

*/

/*

//5、划动手势

//右划

UISwipeGestureRecognizer *swipeRightGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];

swipeRightGesture.direction=UISwipeGestureRecognizerDirectionRight;

[imageM addGestureRecognizer:swipeRightGesture];

[swipeRightGesture release];

//左划

UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];

swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;

[imageM addGestureRecognizer:swipeLeftGesture];

[swipeLeftGesture release];

//上划

UISwipeGestureRecognizer *swipeUpGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];

swipeUpGesture.direction=UISwipeGestureRecognizerDirectionUp;

[imageM addGestureRecognizer:swipeUpGesture];

[swipeUpGesture release];

//下划

UISwipeGestureRecognizer *swipeDownGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];

swipeDownGesture.direction=UISwipeGestureRecognizerDirectionDown;

[imageM addGestureRecognizer:swipeDownGesture];

[swipeDownGesture release];

*/

//6、长按手势

UILongPressGestureRecognizer *longpressGesutre=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongpressGesture:)];

//长按时间为1秒

longpressGesutre.minimumPressDuration=1;

//所需手指数

longpressGesutre.numberOfTouchesRequired=2;

[imageM addGestureRecognizer:longpressGesutre];

[longpressGesutre release];

}

/*

//双击屏幕时会调用此方法

-(void)handleTapGesture:(UIGestureRecognizer*)sender

{

NSLog(@".....");

}

*/

/*

//捏的手势

-(void)handlePinchGesture:(UIGestureRecognizer*)sender

{

NSLog(@",,,");

}

*/

/*

//旋转手势

-(void)handleRotateGesture:(UIGestureRecognizer*)sender

{

NSLog(@"...");

}

*/

/*

//拖手势

-(void)handlePanGesture:(UIGestureRecognizer*)sender

{

NSLog(@"//");

}

*/

/*

//划动手势

-(void)handleSwipeGesture:(UIGestureRecognizer*)sender

{

//划动的方向

UISwipeGestureRecognizerDirection direction=[(UISwipeGestureRecognizer*) sender direction];

//判断是上下左右

switch (direction)

{

case UISwipeGestureRecognizerDirectionUp:

NSLog(@"up");

break;

case UISwipeGestureRecognizerDirectionDown:

NSLog(@"down");

break;

case UISwipeGestureRecognizerDirectionLeft:

NSLog(@"left");

break;

case UISwipeGestureRecognizerDirectionRight:

NSLog(@"right");

break;

default:

break;

}

}

*/

//长按手势

-(void)handleLongpressGesture:(UIGestureRecognizer*)sender

{

if (sender.state == UIGestureRecognizerStateEnded)

{

NSLog(@"Long press Ended");

}

else

{

NSLog(@"Long press detected.");

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第十一天:

(1)MapKit

#import "MapKitViewController.h"

#import <MapKit/MapKit.h>

#import <CoreLocation/CoreLocation.h>

/*

地图需要MapKit.framework

定位需要CoreLocation.framework,它提供了一个CLLocationManager类来实现定位

*/

@interface MapKitViewController ()<CLLocationManagerDelegate>//定位代理

{

MKMapView* mapView;

CLLocationManager* manager;

CLLocation* currentLocation;

}

@end

@implementation MapKitViewController

- (void)viewDidLoad

{

[super viewDidLoad];

UIButton* btnAnimation = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnAnimation.frame = CGRectMake(10, 10, 300, 40);

[btnAnimation setTitle:@"Big" forState:UIControlStateNormal];

[btnAnimation addTarget:self action:@selector(GoBig:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnAnimation];

[btnAnimation release];

UIButton* btnCamera = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnCamera.frame = CGRectMake(10, 60, 300, 40);

[btnCamera setTitle:@"Small" forState:UIControlStateNormal];

[btnCamera addTarget:self action:@selector(GoSmall:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnCamera];

[btnCamera release];

mapView = [[MKMapView alloc]init];

mapView.frame = CGRectMake(0, 100, 320, 300);

[self.view addSubview:mapView];

manager = [[CLLocationManager alloc]init];

manager.delegate = self; //设置代理

[manager startUpdatingLocation]; //开始定位

}

- (void)locationManager:(CLLocationManager *)manager

didUpdateToLocation:(CLLocation *)newLocation

fromLocation:(CLLocation *)oldLocation

{

currentLocation = newLocation;

mapView.region = MKCoordinateRegionMake(newLocation.coordinate, MKCoordinateSpanMake(0.05, 0.05));

mapView.showsUserLocation = YES; //显示大头针

[manager stopUpdatingLocation]; //更新一次后停止更新

}

-(void)GoBig:(id)sender

{

MKCoordinateRegion region = mapView.region;

//设置跨度

region.span = MKCoordinateSpanMake(region.span.latitudeDelta*0.4,region.span.longitudeDelta*0.4);

[mapView setRegion:region];

}

-(void)GoSmall:(id)sender

{

MKCoordinateRegion region = mapView.region;

//设置跨度

region.span = MKCoordinateSpanMake(region.span.latitudeDelta*1.4,region.span.longitudeDelta*1.4);

[mapView setRegion:region];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(2)MutilTouch

#import "MutilTouchViewController.h"

@interface MutilTouchViewController ()

{

UIImageView* imageM;

double previousDistance;// 触摸点之间当前的距离

double zoomFactor; //缩放因子

}

@end

@implementation MutilTouchViewController

- (void)viewDidLoad

{

[super viewDidLoad];

zoomFactor = 1; //初始化缩放因子

imageM = [[UIImageView alloc]init];

imageM.frame = CGRectMake(0, 0, 320, 300);

[imageM setImage:[UIImage imageNamed:@"A.png"]];

[self.view addSubview:imageM];

[imageM release];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

//判断当前触摸点为几个

if (event.allTouches.count)

{

NSArray* touches = [event.allTouches allObjects];//获得屏幕上所有的UITouch对象

CGPoint p1 = [[touches objectAtIndex:0] locationInView:imageM];//获得笛卡尔坐标

CGPoint p2 = [[touches objectAtIndex:1] locationInView:imageM];

previousDistance = sqrt(pow(p1.x-p2.x, 2) + pow(p1.y-p2.y, 2));// 计算两点触摸点的距离

}

}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

//判断当前触摸点为几个

if (event.allTouches.count ==2)

{

NSArray* touches = [event.allTouches allObjects];

CGPoint p1 = [[touches objectAtIndex:0] locationInView:imageM];

CGPoint p2 = [[touches objectAtIndex:1] locationInView:imageM];

double distance = sqrt(pow(p1.x-p2.x, 2) + pow(p1.y-p2.y, 2));
//计算两点之间的当前距离

zoomFactor += (distance - previousDistance)/previousDistance;//求缩放比

previousDistance = distance;

[self refreshView];

}

}

-(void) refreshView

{

if(zoomFactor < 0.1) zoomFactor = 0.1; //控制缩放因子不过大或过小

if(zoomFactor > 4 ) zoomFactor = 4;

CGRect newFrame = CGRectInset(imageM.frame,

(imageM.frame.size.width - 100*zoomFactor)/2,

(imageM.frame.size.height - 100*zoomFactor)/2);

imageM.frame = newFrame;

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

previousDistance = 0;//重置距离

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(3)AudioView

@implementation AudioViewController

- (void)viewDidLoad

{

[super viewDidLoad];

UIButton* btnAnimation = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnAnimation.frame = CGRectMake(10, 10, 300, 40);

[btnAnimation setTitle:@"play" forState:UIControlStateNormal];

[btnAnimation addTarget:self action:@selector(GoPlay:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnAnimation];

[btnAnimation release];

UIButton* btnCamera = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnCamera.frame = CGRectMake(10, 60, 300, 40);

[btnCamera setTitle:@"stop" forState:UIControlStateNormal];

[btnCamera addTarget:self action:@selector(GoStop:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnCamera];

[btnCamera release];

player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"caoyuan" ofType:@"mp3"]] error:nil];

}

-(void)GoPlay:(id)sender

{

[player play];

}

-(void)GoStop:(id)sender

{

[player pause];

}

-(void)viewWillDisappear:(BOOL)animated

{

[player release];

player = nil;

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(4)VideoView

#import "VideoViewController.h"

#import <MediaPlayer/MediaPlayer.h> //包含头文件

@interface VideoViewController ()

{

MPMoviePlayerController *player; //声明播放器对象

BOOL isPlay; //判断播放器当前的状态

}

@end

@implementation VideoViewController

/*

MPMoviePlayerController和AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController可以直接通过远程的url初始化,而AVAudioPlayer则不可以,不过大体上感觉一样。格式支持MOV,MP4,M4V,3GP等。。。

使用MPMoviePlayerController之前需要导入MediaPlayer.framework并且引入头文件

*/

- (void)viewDidLoad

{

[super viewDidLoad];

UIButton* btnAnimation = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnAnimation.frame = CGRectMake(10, 10, 300, 40);

[btnAnimation setTitle:@"play" forState:UIControlStateNormal];

[btnAnimation addTarget:self action:@selector(GoPlay:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnAnimation];

[btnAnimation release];

UIButton* btnCamera = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnCamera.frame = CGRectMake(10, 60, 300, 40);

[btnCamera setTitle:@"stop" forState:UIControlStateNormal];

[btnCamera addTarget:self action:@selector(GoStop:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnCamera];

[btnCamera release];

NSString *path = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"m4v"];

NSURL *url = [[NSURL alloc]initFileURLWithPath:path];

player = [[MPMoviePlayerController alloc]initWithContentURL:url];

[player.view setFrame:CGRectMake(0, 100, 320, 320)];

[self.view addSubview:player.view];

}

-(void)GoPlay:(id)sender

{

[player play];

}

-(void)GoStop:(id)sender

{

[player pause];

}

-(void)viewWillDisappear:(BOOL)animated

{

[player release];

player = nil;

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(5)Camera

#import "CameraViewController.h"

@interface CameraViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>

{

UIImageView* imageM;

UIImagePickerController *picker;

}

@end

@implementation CameraViewController

- (void)viewDidLoad

{

[super viewDidLoad];

UIButton* btnAnimation = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnAnimation.frame = CGRectMake(10, 10, 300, 40);

[btnAnimation setTitle:@"相机" forState:UIControlStateNormal];

[btnAnimation addTarget:self action:@selector(Goxiangji:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnAnimation];

[btnAnimation release];

UIButton* btnCamera = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnCamera.frame = CGRectMake(10, 60, 300, 40);

[btnCamera setTitle:@"相册" forState:UIControlStateNormal];

[btnCamera addTarget:self action:@selector(Goxiangce:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnCamera];

[btnCamera release];

imageM = [[UIImageView alloc]init];

imageM.frame = CGRectMake(0, 100, 320, 300);

[imageM setImage:[UIImage imageNamed:@"A.png"]];

[self.view addSubview:imageM];

[imageM release];

}

-(void)Goxiangji:(id)sender

{

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

{

picker = [[UIImagePickerController alloc]init];

//设定为相机

picker.sourceType = UIImagePickerControllerSourceTypeCamera;

picker.delegate = self;

[self presentViewController:picker animated:YES completion:nil];

[picker release];

}

else

{

NSLog(@"not allow");

}

}

-(void)Goxiangce:(id)sender

{

picker = [[UIImagePickerController alloc]init];

//设定相册

picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

picker.delegate=self;

[self presentViewController:picker animated:YES completion:nil];

[picker release];

}

//UIImagePickerControllerDelegate的代理方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

imageM.image = [info objectForKey:UIImagePickerControllerOriginalImage];

[self dismissViewControllerAnimated:YES completion:nil];

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

[self dismissViewControllerAnimated:YES completion:nil];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(6)Animation

#import "AnimationViewController.h"

@interface AnimationViewController ()

{

UIImageView* imageM;

}

@end

@implementation AnimationViewController

- (void)viewDidLoad

{

[super viewDidLoad];

imageM = [[UIImageView alloc]init];

imageM.frame = CGRectMake(0, 0, 320, 300);

[imageM setImage:[UIImage imageNamed:@"A.png"]];

[self.view addSubview:imageM];

[imageM release];

kind = ZoomIn;

UIButton* btnAnimation = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnAnimation.frame = CGRectMake(10, 340, 300, 40);

[btnAnimation setTitle:@"Animation" forState:UIControlStateNormal];

[btnAnimation addTarget:self action:@selector(GoAnimation:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnAnimation];

[btnAnimation release];

}

-(void)GoAnimation:(id)sender

{

switch (kind)

{

/** 放大视图 **/

case ZoomIn:

{

//开始动画块

[UIView beginAnimations:@"ZoomIn" context:NULL];

//动画块时长

[UIView setAnimationDuration:1.0f];

//CGRectInset返回中心点不变,比原视图大或小的视图

imageM.frame = CGRectInset(imageM.frame,-CGRectGetWidth(imageM.frame),-CGRectGetHeight(imageM.frame));

//提交动画块并开始执行动画块

[UIView commitAnimations];

kind = ZoomOut;

break;

}

/** 缩小视图 **/

case ZoomOut:

{

[UIView beginAnimations:@"ZoomOut" context:NULL];

[UIView setAnimationDuration:1.0f];

imageM.frame = CGRectInset(imageM.frame,CGRectGetWidth(imageM.frame)/3,CGRectGetHeight(imageM.frame)/3);

[UIView commitAnimations];

kind = FlipLeft;

break;

}

case FlipLeft:

{

//开始动画

[UIView beginAnimations:@"FlipLeft" context:NULL];

//动画的曲线

[UIView setAnimationCurve:2];

//动画时间

[UIView setAnimationDuration:2];

//从哪个方向翻页

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:imageM cache:YES];

//提交开始动画

[UIView commitAnimations];

kind = FlipRight;

break;

}

case FlipRight:

{

[UIView beginAnimations:@"FlipRight" context:NULL];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:imageM cache:YES];

[UIView commitAnimations];

kind = CurlDown;

break;

}

case CurlDown:

{

[UIView beginAnimations:@"CurlDown" context:NULL];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:imageM cache:YES];

[UIView commitAnimations];

kind = CurlUp;

break;

}

case CurlUp:

{

[UIView beginAnimations:@"CurlUp" context:NULL];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:imageM cache:YES];

[UIView commitAnimations];

kind = ZoomIn;

break;

}

default:

break;

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第十天:

(1)Json

#import "JsonViewController.h"

#import "JSON.h"

#import "JSONKit.h"

@interface JsonViewController ()

@end

@implementation JsonViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[self Json1];

}

-(void)Json1

{

NSString * resourcePath = [[NSBundle mainBundle] pathForResource:@"Jsondata1" ofType:@"txt"];

NSString * strJson = [NSString stringWithContentsOfFile:resourcePath encoding:NSUTF8StringEncoding error:NULL];

//使用"JSON.h"解析,直接解析

NSDictionary * jsonDic = [strJson JSONValue];

//使用jsonkit.h解析

//NSDictionary *rootdic=[strJson objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode error:nil];

NSArray * versionArray = [jsonDic objectForKey:@"VERSION"];

NSDictionary * v1Dic = [versionArray objectAtIndex:0];

NSString * v1DicStr = [v1Dic objectForKey:@"简体中文"];

NSLog(@"v1DicStr = %@",v1DicStr);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(2)GDataXM

#import "GDataXMLViewController.h"

@interface GDataXMLViewController ()

@end

@implementation GDataXMLViewController

/*

header 里面/usr/include/libxml2

*/

- (void)viewDidLoad

{

[super viewDidLoad];

[self parseXml1];

}

-(void)parseXml1

{

NSString* filepath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"xml"];

NSString* str = [[NSString alloc] initWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];

NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

//使用NSData对象初始化

GDataXMLDocument* document=[[GDataXMLDocument alloc]initWithData:data options:0 error:nil];

GDataXMLElement* element=[document rootElement];

NSArray* bookArray=[element elementsForName:@"book"];

for (id object in bookArray)

{

NSArray* titleArray=[object elementsForName:@"title"];

GDataXMLElement* title=[titleArray objectAtIndex:0];

NSLog(@"title=%@",[title stringValue]);

}

/*

NSArray* bookArray=[element elementsForName:@"channel"];

for (id object in bookArray)

{

NSArray* titleArray=[object elementsForName:@"item"];

for(id objects in titleArray)

{

NSArray* ll = [objects elementsForName:@"title"];

GDataXMLElement* title=[ll objectAtIndex:0];

NSLog(@"title=%@",[title stringValue]);

NSArray* lll = [objects elementsForName:@"description"];

GDataXMLElement* des = [lll objectAtIndex:0];

NSLog(@"des = %@",des);

}

}*/

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(3)CreateXML

#import "CreateXMLViewController.h"

#import "News.h"

#import "XML1ViewController.h"

@interface CreateXMLViewController ()

{

NSMutableString * stringData;

NSMutableArray * mutableArray;

News* news;

}

@end

@implementation CreateXMLViewController

- (void)viewDidLoad

{

[self CreateXML];

[super viewDidLoad];

UIButton* btnGo = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnGo.frame = CGRectMake(0, 0, 320, 50);

[btnGo addTarget:self action:@selector(AAA) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnGo];

[btnGo release];

}

-(void)AAA

{

XML1ViewController* xmlVC = [[XML1ViewController alloc]init];

[self.navigationController pushViewController:xmlVC animated:YES];

}

-(void)CreateXML

{

News * new1 = [[News alloc] initWithTitle:@"体育" andLink:[NSURL URLWithString:@"http://sina.tiyu.com"] andDate:[NSDate date]];

News * new2 = [[News alloc] initWithTitle:@"娱乐" andLink:[NSURL URLWithString:@"http://sina.yule.com"] andDate:[NSDate date]];

News * new3 = [[News alloc] initWithTitle:@"政治" andLink:[NSURL URLWithString:@"http://sina.zhengzhi.com"] andDate:[NSDate date]];

News * new4 = [[News alloc] initWithTitle:@"天气" andLink:[NSURL URLWithString:@"http://sina.tianqi.com"] andDate:[NSDate date]];

News * aNew = [[News alloc]initWithTitle:@"NBA"andLink:[NSURL URLWithString:@"http://www.baidu.com"]andDate:[NSDate date]];

mutableArray = [[NSMutableArray alloc]init];

[mutableArray addObject:new1];

[mutableArray addObject:new2];

[mutableArray addObject:new3];

[mutableArray addObject:new4];

[mutableArray addObject:aNew];

[new1 release];

[new2 release];

[new3 release];

[new4 release];

[aNew release];

stringData = [NSMutableString stringWithString:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"];

[stringData appendString:@"<rss version=\"2.0\">\n"];

[stringData appendString:@"\t<channel>\n"];

for(int i = 0; i < [mutableArray count]; i++)

{

News * new = [mutableArray objectAtIndex:i] ;

news = new;

NSDateFormatter * formatter = [[[NSDateFormatter alloc] init] autorelease];

[formatter setDateFormat: @"yyyy-MM-dd HH:mm"];

[stringData appendString:@"\t\t<item>\n"];

[stringData appendString:@"\t\t\t<title>"];

[stringData appendString:news.title];

[stringData appendString:@"</title>\n\t\t\t<link>"];

[stringData appendString:[NSString stringWithFormat:@"%@",news.link]];

[stringData appendString:@"</link>\n\t\t\t<pubDate>"];

[stringData appendString:[formatter stringFromDate:news.date]];

[stringData appendString:@"</pubDate>\n\t\t</item>\n"];

}

[stringData appendString:@"\t</channel>\n"];

[stringData appendString:@"</rss>"];

NSLog(@"*****stringdata*****\n%@",stringData);

NSArray * researchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString * filePath = [[researchPath objectAtIndex:0] stringByAppendingPathComponent:@"news.xml"];

NSLog(@"filePath:%@",filePath);

[stringData writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:NULL];

if ([stringData writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:NULL])

{

UIAlertView * alt = [[UIAlertView alloc]initWithTitle:@"Create XMLFile"

message:@"Succeed Create"

delegate:nil

cancelButtonTitle:@"OK"

otherButtonTitles:nil];

[alt show];

[alt autorelease];

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(4)XML

#import "XML1ViewController.h"

#import "ShowXMLViewController.h"

@interface XML1ViewController ()<UITableViewDataSource,UITableViewDelegate,NSXMLParserDelegate>

{

NSMutableArray* data; // title, pubDate, link

//存储当前解析的元素(标签)的值

NSMutableDictionary* curElement;

//当前子元素(标签)的值

NSMutableString* curText;

UITableView* tableXML;

}

@end

@implementation XML1ViewController

- (void)viewDidLoad

{

data = [[NSMutableArray alloc] init];

curElement = [[NSMutableDictionary alloc] init];

curText = [[NSMutableString alloc] init];

NSString* strPath=[[NSBundle mainBundle] pathForResource:@"news" ofType:@"xml"];

NSString* xmlStr=[[NSString alloc]initWithContentsOfFile:strPath encoding:NSUTF8StringEncoding error:nil];

NSData* datas=[xmlStr dataUsingEncoding:NSUTF8StringEncoding];

if(datas == nil )

{

NSLog(@"File not ready.");

return;

}

//解析XML文件步骤:

//1.创建XML解析器NSXMLParser的实例(使用包含xml数据的缓冲区对象);

//2.设置XML解析器的委托对象NSXMLParserDelegate;

//3.开始事件驱动的异步解析过程;

//4.实现委托的回调方法

// parse XML

NSXMLParser* parser =[[NSXMLParser alloc]initWithData:datas];//1.创建NSXMLParser实例

parser.delegate = self;//2.设置XML解析器的委托

[parser parse]; //3.开始XML解析

[parser release];

[super viewDidLoad];

tableXML = [[UITableView alloc]init];

tableXML.frame = CGRectMake(0, 0, 320, 460);

[tableXML setDataSource:self];

[tableXML setDelegate:self];

[self.view addSubview:tableXML];

}

//当我们进入这个回调时,我们可以初始化数据:

- (void)parserDidStartDocument:(NSXMLParser *)parser

{

[data removeAllObjects];

NSLog(@"a");

}

//开始分析一个元素(发现该元素的起始标签)

- (void)parser:(NSXMLParser *)parser

didStartElement:(NSString *)elementName

namespaceURI:(NSString *)namespaceURI

qualifiedName:(NSString *)qualifiedName

attributes:(NSDictionary *)attributeDict

{

NSLog(@"b");

if ([elementName isEqualToString:@"item"]) {

[curElement removeAllObjects];//清空字典中所有的对象

}

else if ([elementName isEqualToString:@"title"]){

[curText setString:@""];

}

else if ([elementName isEqualToString:@"link"]){

[curText setString:@""];

}

else if ([elementName isEqualToString:@"pubDate"]){

[curText setString:@""];

}

}

//发现该元素的值时调用

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

NSLog(@"c");

[curText appendString:string];

}

//结束分析一个元素(发现该元素的结束标签)

- (void)parser:(NSXMLParser *)parser

didEndElement:(NSString *)elementName

namespaceURI:(NSString *)namespaceURI

qualifiedName:(NSString *)qName

{

NSLog(@"d");

if ([elementName isEqualToString:@"item"])

{

[data addObject:[NSDictionary dictionaryWithDictionary:curElement]];

}

else if ([elementName isEqualToString:@"title"]){

[curElement setObject:[NSString stringWithString: curText] forKey:@"title"];

}

else if ([elementName isEqualToString:@"link"]){

[curElement setObject:[NSString stringWithString: curText] forKey:@"link"];

}

else if ([elementName isEqualToString:@"pubDate"]){

[curElement setObject:[NSString stringWithString: curText] forKey:@"pubDate"];

}

}

//当所有的分析都完成之后,我们会得到parserDidEndDocument:方法的回调。到这个时候,我们所有要做的就是去显示更新我们从XML所得到的数据

- (void)parserDidEndDocument:(NSXMLParser *)parser

{

[tableXML reloadData];

}

#pragma mark -

#pragma mark Table view data source

// Customize the number of sections in the table view.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 1;

}

// Customize the number of rows in the table view.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return [data count];

}

// Customize the appearance of table view cells.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

}

// Configure the cell.

NSDictionary* dic = [data objectAtIndex:indexPath.row];

cell.textLabel.text = [dic objectForKey:@"title"];

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

ShowXMLViewController* showVC = [[ShowXMLViewController alloc]init];

showVC.dic = [data objectAtIndex:indexPath.row];

[self.navigationController pushViewController:showVC animated:YES];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第九天:

(1)

#import "Show1ViewController.h"

/*

UIWebView的loadRequest可以用来加载一个url,

它需要一个NSURLRequest参数.

*/

@interface Show1ViewController ()<UITextFieldDelegate,UIWebViewDelegate>

{

UITextField* urlField;

UIWebView* webView;

UIActivityIndicatorView* activity;

}

@end

@implementation Show1ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

urlField = [[UITextField alloc]init];

[urlField setFrame:CGRectMake(0, 0, 250, 30)];

[urlField setTextAlignment:1];

[urlField setBorderStyle:1];

[self.view addSubview:urlField];

[urlField setDelegate:self];

[urlField release];

webView = [[UIWebView alloc]init];

[webView setFrame:CGRectMake(0, 30, 320, 400)];

[webView setDelegate:self];

[self.view addSubview:webView];

[webView release];

activity = [[UIActivityIndicatorView alloc]init];

activity.frame = CGRectMake((320-30)/2, (480-30)/2, 30, 30);

[activity setActivityIndicatorViewStyle:1];

[activity setHidesWhenStopped:YES];

[activity setBackgroundColor:[UIColor grayColor]];

[self.view addSubview:activity];

[activity release];

UIButton* btnGo = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[btnGo setFrame:CGRectMake(260, 0, 50, 30)];

[btnGo setTitle:@"Go" forState:UIControlStateNormal];

[btnGo addTarget:self action:@selector(GoUrl) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnGo];

}

-(void)GoUrl

{

[urlField resignFirstResponder];

NSURL* url = [NSURL URLWithString:urlField.text];

NSURLRequest* request = [[NSURLRequest alloc]initWithURL:url];

[webView loadRequest:request];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

//页面重定向时调用,每次加载的时候都会调用这个方法,可以用这个方法进行一些过滤

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

NSLog(@"页面重定向");

return YES;

}

//开始加载web页面的时候调用

-(void)webViewDidStartLoad:(UIWebView *)webView

{

NSLog(@"Start load WebView");

[activity startAnimating];

}

//结束加载web页面的时候调用

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

NSLog(@"End load WebView");

[activity stopAnimating];

}

//加载失败的时候调用这个方法

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

[activity stopAnimating];

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"信息提示" message:@"加载失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];

[alertView show];

}

@end

(2)上传下载

#import "ASIViewController.h"

@interface ASIViewController ()<NSURLConnectionDataDelegate>

{

NSMutableData* _mutableData;

UITextView* textView;

}

@end

@implementation ASIViewController

///////////////////////////////////////////////////

//NSURLConnection同步请求

-(void)LoadData4

{

// 要请求的地址

NSString *urlString=URL;

// 将地址编码

urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

// 实例化NSMutableURLRequest,并进行参数配置

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:[NSURL URLWithString: urlString]];

[request setCachePolicy:NSURLRequestReloadIgnoringCacheData]; //设置缓存

[request setTimeoutInterval: 60]; //请求时间

[request setHTTPShouldHandleCookies:FALSE];

[request setHTTPMethod:@"GET"];

// Response对象,用来得到返回后的数据,比如,用statusCode==200 来判断返回正常

NSHTTPURLResponse *response;

NSData *returnData = [NSURLConnection sendSynchronousRequest:request

returningResponse:&response error:nil];

// 处理返回的数据

NSString *strReturn = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"%@",strReturn);

NSLog(@"%d",[response statusCode]);

// 对象还是要释放的

[request release];

[strReturn release];

}

//////////////////////////////////////////////////

/*

使用NSURLConnection创建异步下载请求。此时需要NSURLConnectionDelegate协议方法

*/

//下载数据

-(void)downLoadData

{

NSString* userName = @"neworigin";//用户名

//下载数据URL

//NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",GET_URL,userName]];

NSURL* url = [NSURL URLWithString:URL];

//创建请求的对象

NSURLRequest* request = [NSURLRequest requestWithURL:url];

//创建URLConnetion对象,并设置当前类的对象为代理

NSURLConnection* connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

if(connection)

{

NSLog(@"创建成功");

}

else

{

NSLog(@"创建失败");

}

}

//请求失败代用

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error

{

NSLog(@"请求数据失败");

}

//请求得到响应时调用,在此方法中将_mutableData清空

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

[_mutableData setData:[NSData data]];

}

//接收到数据时调用,并将接收到得data追加到_mutableData中

-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data

{

[_mutableData appendData:data];

}

//请求完成后,将_mutableData转成字符串并输出

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

NSString* str = [[NSString alloc]initWithData:_mutableData encoding:NSUTF8StringEncoding];

textView.text = str;

}

////////////////////////////////////////////////////////////////

//上传数据

-(void)updateData

{

NSString* userName = @"neworigin";

//需要上传的内容

NSString* content = @"我要把这几个文字提交到服务器";

NSData* postData = [content dataUsingEncoding:NSUTF8StringEncoding];

NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",POST_URL,userName]];

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPBody:postData];//设置请求体,即上传的内容

[request setHTTPMethod:@"POST"];//设置请求方式为POST

[request setValue:[NSString stringWithFormat:@"%d",postData.length] forHTTPHeaderField:@"Content-length"];//设置http头

NSURLConnection* connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

if(connection)

{

NSLog(@"创建成功");

}

else

{

NSLog(@"创建失败");

}

}

///////////////////////////////////////////////////////////////

//使用NSURLConnection的sendAsynchronousRequest方法创建异步下载请求

-(void)LoadData2

{

NSString* userName = @"neworigin";//用户名

//下载数据URL

//NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",GET_URL,userName]];

NSURL* url = [NSURL URLWithString:URL];

//创建请求的对象

NSURLRequest* request = [NSURLRequest requestWithURL:url];

NSOperationQueue* queue = [NSOperationQueue mainQueue];//异步上传只能在主主线程队列中

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse* response,NSData* data,NSError* connectionError)

{

if(!connectionError)

{

NSString* str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

textView.text = str;

}

}];

}

//使用NSURLConnection的sendAsynchronousRequest方法创建同步下载请求

-(void)LoadDate3

{

NSString* userName = @"neworigin";//用户名

//下载数据URL

//NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",GET_URL,userName]];

NSURL* url = [NSURL URLWithString:URL];

//创建请求的对象

NSURLRequest* request = [NSURLRequest requestWithURL:url];

NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString* str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

textView.text = str;

}

- (void)viewDidLoad

{

[super viewDidLoad];

textView = [[UITextView alloc]init];

[textView setFrame:CGRectMake(0, 0, 320, 460)];

[textView setEditable:NO];

[textView setFont:[UIFont systemFontOfSize:20.0f]];

[self.view addSubview:textView];

[textView release];

_mutableData = [[NSMutableData alloc] init];

//[self downLoadData];

//[self LoadData2];

//[self LoadDate3];

//[self updateData];

[self LoadData4];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第八天:数据库

(1)FMDB

#import "FMDBViewController.h"

#import "FMDatabase.h"

@interface FMDBViewController ()

{

FMDatabase *db;

}

@end

@implementation FMDBViewController

/*

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,就出现了一系列将SQLite API进行封装的库,例如FMDB、PlausibleDatabase、sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁、易用的封装库,这一篇文章简单介绍下FMDB的使用。

FMDB常用类:

FMDatabase : 一个单一的SQLite数据库,用于执行SQL语句。

FMResultSet :执行查询一个FMDatabase结果集。

FMDatabaseAdditions:一个SQLite新增加的产物

*/

/*

要注意的是,在iOS环境下,只有document directory 是可以进行读写的。在写程式时用的那个Resource资料夹底下的东西都是read-only。因此,建立的资料库要放在document 资料夹下。方法如下:

*/

//打开数据库

-(void)OpenDB

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"MyDataBase.db"];

NSLog(@"%@",writableDBPath);

db = [FMDatabase databaseWithPath:writableDBPath]; //连接FMDB

if (![db open])

{

NSLog(@"Could not open db.");

return ;

}

else

{

NSLog(@"Can open db.");

}

}

/*

这是FMDB裡很常用的指令,[FMDatabase_object executeUpdate:]后面用NSString塞入SQLite语法,就是创建一个表。

*/

//创建表

-(void)CreateTable

{

//创建表

[db executeUpdate:@"CREATE TABLE Person (name, age)"];

}

/*

插入资料跟前面一样,用executeUpdate后面加语法就可以了。比较不同的是,因為插入的资料会跟Objective-C的变数有关,所以在string裡使用?号来代表这些变数。

*/

//插入数据

-(void)InsertwithValue1:(NSString*)value1 withValue2:(NSInteger)value2;

{

[db executeUpdate:@"INSERT INTO Person (name,age) VALUES (?,?)",value1,[NSNumber numberWithInt:value2]];

if ([db hadError])

{

NSLog(@"Err: %@", [db lastErrorMessage]);

}

else

{

NSLog(@"插入数据成功");

}

}

/*

取得特定的资料,则需使用FMResultSet物件接收传回的内容:

用[rs next]可以轮询query回来的资料,每一次的next可以得到一个row裡对应的数值,并用[rs stringForColumn:]或[rs intForColumn:]等方法把值转成Object-C的型态。取用完资料后则用[rs close]把结果关闭。

*/

//查询数据

-(void)SelectTableName:(NSString*)tableName

{

NSString* sql = [NSString stringWithFormat:@"SELECT * FROM %@",tableName];

FMResultSet *rs = [db executeQuery:sql];

while ([rs next])

{

NSString *name = [rs stringForColumn:@"name"];

int age = [rs intForColumn:@"age"];

NSLog(@"name = %@,age = %d",name,age);

}

[rs close];

}

//修改数据

-(void)UpdateName:(NSString*)name withAge:(NSInteger)age

{

[db executeUpdate:@"UPDATE Person SET age = ? WHERE name = ?",[NSNumber numberWithInt:age],name];

}

//删除数据

-(void)DeleteTableWithName:(NSString*)name

{

[db executeUpdate:@"DELETE FROM Person Where name = ?",name];

}

- (void)viewDidLoad

{

[super viewDidLoad];

[self OpenDB];

//[self CreateTable];

[self InsertwithValue1:@"caoyang" withValue2:23];

[self SelectTableName:@"Person"];

//[self UpdateName:@"caoyang" withAge:22];

//[self DeleteTableWithName:@"caoyang"];

//[self SelectTableName:@"Person"];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(2)Sqlite

/*

sqlite3* db; 数据库句柄,根文件句柄file类似

sqlite3_stmt* stmt 这个相当于ODBC的command对象,用于保存编译好的SQL语句

sqlite3_open() 打开数据库,没有数据库时创建

sqqlite3_exec() 执行非产讯的sql语句

sqlite3_step() 在调用sqlite3_prepare后,使用这个函数在记录集中移动

sqlite3_close() 关闭数据库

*/

#import "SqliteViewController.h"

@interface SqliteViewController ()

@end

@implementation SqliteViewController

//获取Documents文件夹中文件路径

-(NSString*)getDouumentsPath

{

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString* documentsdir = [paths objectAtIndex:0];

return [documentsdir stringByAppendingPathComponent:@"database.sql"];

}

//创建并打开数据库

-(void)openDB

{

if(sqlite3_open([[self getDouumentsPath]UTF8String], &db)!=SQLITE_OK)

{

sqlite3_close(db);

NSAssert(0,@"数据库打开失败");//停止应用程序并关闭数据库

}

}

//创建表

-(void)createTableNamed:(NSString*)tableName withFiled1:(NSString*)field1 withField2:(NSString*)field2

{

char* err;

NSString* sql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, '%@' TEXT,'%@' TEXT);",tableName,field1,field2];//创建表的sql语句

if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)!=SQLITE_OK)

{

sqlite3_close(db);

NSAssert(0, @"创建表失败");

}

}

//插入表中部分数据

-(void)insertTableNamed:(NSString*)tableName withField1:(NSString*)field1 withValue1:(NSString*)value1 withField2:(NSString*)field2 withValue2:(NSString*)value2

{

NSString* sql = [NSString stringWithFormat:@"INSERT OR REPLACE INTO '%@'('%@','%@') VALUES ('%@','%@')",tableName,field1,field2,value1,value2];

char* err;

if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)!=SQLITE_OK)

{

sqlite3_close(db);

NSAssert(0, @"插入数据库失败");

}

}

//查询数据库

-(void)selectAllFromTableName:(NSString*)tableName

{

NSString* sql = [NSString stringWithFormat:@"SELECT * FROM '%@'",tableName];

sqlite3_stmt* statement; //用于保存编译好的sql语句

if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK)

{

while (sqlite3_step(statement)==SQLITE_ROW)

{

char* field1 = (char*)sqlite3_column_text(statement, 1);

NSString* strField1 = [[NSString alloc]initWithUTF8String:field1];

char* field2 = (char*)sqlite3_column_text(statement, 2);

NSString* strField2 = [[NSString alloc]initWithUTF8String:field2];

NSLog(@"userName = %@, passWord = %@",strField1,strField2);

}

sqlite3_finalize(statement);

}

}

//修改表中数据

-(void)updateTableNamed:(NSString*)tableName withField1:(NSString*)field1 withValue1:(NSString*)value1 withField2:(NSString*)field2 withValue2:(NSString*)value2

{

[self openDB];

NSString* sql = [NSString stringWithFormat:@"UPDATE %@ SET %@='%@' WHERE %@ = '%@'",tableName,field2,value2,field1,value1];

char* err;

if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)!=SQLITE_OK)

{

sqlite3_close(db);

NSAssert(0, @"修改数据库失败");

}

}

//删除表中某条数据

-(void)deleteTableName:(NSString*)tableName withField1:(NSString*)field1 withValue1:(NSString*)value1

{

[self openDB];

NSString* sql = [NSString stringWithFormat:@"Delete FROM %@ WHERE %@ = '%@'",tableName,field1,value1];

char* err;

if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)!=SQLITE_OK)

{

sqlite3_close(db);

NSAssert(0, @"删除数据库失败");

}

}

- (void)viewDidLoad

{

[super viewDidLoad];

[self openDB];

[self createTableNamed:@"Login" withFiled1:@"username" withField2:@"password"];

//[self insertTableNamed:@"Login" withField1:@"username" withValue1:@"aaa" withField2:@"password" withValue2:@"bbb"];

[self selectAllFromTableName:@"Login"];

//[self updateTableNamed:@"Login" withField1:@"username" withValue1:@"aaa" withField2:@"password" withValue2:@"mmm"];

NSLog(@"===============================");

//[self deleteTableName:@"Login" withField1:@"username" withValue1:@"aaa"];

//[self selectAllFromTableName:@"Login"];

sqlite3_close(db);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第七天: OtherViewController

#import "OtherViewController.h"

#define SizeOfImage 6

@interface OtherViewController ()<UIScrollViewDelegate>

{

UIScrollView* scrollView;

UIPageControl* pageControl;

UIScrollView* smallScrollView;

}

@end

@implementation OtherViewController

- (void)viewDidLoad

{

[super viewDidLoad];

scrollView = [[UIScrollView alloc]init];

scrollView.frame = CGRectMake(0, 0, 320, 200);

//设置控件的滑动空间

scrollView.contentSize = CGSizeMake(320*SizeOfImage, 200);

//设置滚动条

scrollView.showsHorizontalScrollIndicator = YES;

scrollView.showsVerticalScrollIndicator = YES;

//分页显示

scrollView.pagingEnabled = YES;

[scrollView setDelegate:self];

[self.view addSubview:scrollView];

[scrollView release];

//在scrollView上添加图片

for(int i=0;i<SizeOfImage;i++)

{

UIImageView* imageView = [[UIImageView alloc]initWithFrame:CGRectMake(320*i, 0, 320, 200)];

[imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"big%d.png",i]]];

[scrollView addSubview:imageView];

[imageView release];

}

//pageControl

pageControl = [[UIPageControl alloc]init];

pageControl.frame = CGRectMake(100, 210, 120, 10);

//设置点的个数

pageControl.numberOfPages=SizeOfImage;

//设置当前点位置

pageControl.currentPage=0;

[pageControl setBackgroundColor:[UIColor blueColor]];

//添加事件方法

[pageControl addTarget:self action:@selector(pageTurn:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:pageControl];

[pageControl release];

smallScrollView = [[UIScrollView alloc]init];

smallScrollView.frame = CGRectMake(80, 230, 160, 100);

//设置控件的滑动空间

smallScrollView.contentSize = CGSizeMake(160*SizeOfImage, 100);

//设置滚动条

smallScrollView.showsHorizontalScrollIndicator = YES;

smallScrollView.showsVerticalScrollIndicator = YES;

smallScrollView.delegate = self;

smallScrollView.pagingEnabled = YES;

[self.view addSubview:smallScrollView];

[smallScrollView release];

//在scrollView上添加图片

for(int i=0;i<SizeOfImage;i++)

{

/*

UIImageView* imageView = [[UIImageView alloc]initWithFrame:CGRectMake(160*i, 0, 160, 100)];

[imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"small%d.png",i]]];

[smallScrollView addSubview:imageView];

[imageView release];

*/

UIImage* image = [UIImage imageNamed:[NSString stringWithFormat:@"small%d.png",i]];

DefaultView* defView = [[DefaultView alloc]initWithFrame:CGRectMake(i*160, 0, 160, 100) image:image tag:i];

[smallScrollView addSubview:defView];

}

}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView1

{

CGPoint offset=scrollView1.contentOffset;

CGRect bounds=scrollView1.frame;

[pageControl setCurrentPage:offset.x/bounds.size.width];

}

-(void)pageTurn:(id)sender

{

CGRect rect=CGRectMake(pageControl.currentPage*320,0,320,200);

[scrollView scrollRectToVisible:rect animated:YES];

}

//滑动小的scrollView的时候,上面的大图片也跟着动

- (void)scrollViewDidScroll:(UIScrollView *)scrollViews

{

if (scrollViews == smallScrollView)

{

NSInteger index = smallScrollView.contentOffset.x/160;

pageControl.currentPage = index+1;

[scrollView scrollRectToVisible:CGRectMake(320*index, 0, 320, 200) animated:YES];

}

}

-(void)setValue:(NSInteger)value

{

NSLog(@"%d",value);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

第六天:

(1)tableview

//DataSource非必须实现

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 1;

}

//DataSource必须实现

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return [arrayM count];

}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

/*

static NSString* CellIdentifier = @"cell";

//cell的重用

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell==nil)

{

//初始化一个cell

//这里的Style是一个枚举

cell = [[UITableViewCell alloc]initWithStyle:0 reuseIdentifier:CellIdentifier];

//这里是在最后面加上一个->

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

}

//cell.textLabel.text = @"a";

//cell.textLabel.text = [arrayM objectAtIndex:[indexPath row]];

//Movie* mm = (Movie*)[arrayM objectAtIndex:indexPath.row];

//cell.textLabel.text = mm.title;

//return cell;

*/

static NSString* CellIdentifier = @"Cell";

//cell的重用

ShowCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell==nil)

{

//初始化一个cell

//这里的Style是一个枚举

cell = [[ShowCell alloc]initWithStyle:0 reuseIdentifier:CellIdentifier];

//这里是在最后面加上一个->

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

}

//cell.textLabel.text = @"a";

//cell.textLabel.text = [arrayM objectAtIndex:[indexPath row]];

Movie* mm = (Movie*)[arrayM objectAtIndex:indexPath.row];

cell.title.text = mm.title;

cell.money.text = mm.money;

cell.description.text = mm.description;

cell.imageV.image = [UIImage imageNamed:@"..."];

return cell;

}

//Delegate

//是否可以编辑row

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

{

return YES;

}

//点击编辑按钮,

-(void)LeftDo:(id)sender

{

if(tableViewN.editing)

{

[tableViewN setEditing:NO animated:YES];

}

else

{

[tableViewN setEditing:YES animated:YES];

}

}

//设置单元格编辑的样式

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

if([indexPath row]%2==0)

{

return UITableViewCellEditingStyleDelete;

}

else

{

return UITableViewCellEditingStyleInsert;

}

}

//删除或者添加单元格

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

if(editingStyle==UITableViewCellEditingStyleDelete)

{

[arrayM removeObjectAtIndex:[indexPath row]];

[tableView reloadData];

}

else if(editingStyle==UITableViewCellEditingStyleInsert)

{

Movie* movies = [[Movie alloc]initWithTitle:@"大上海" andMoney:@"123" andDescription:@"Am"];

[arrayM addObject:movies];

NSIndexPath* path = [NSIndexPath indexPathForRow:[arrayM count]-1 inSection:0];

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationFade];

}

}

//设置按钮的名称

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

{

if([indexPath row]%2==0)

{

return @"删除A";

}

else

{

return @"添加A";

}

}

//移动单元格

-(void)tableView:(UITableView*)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

NSInteger fromRow = sourceIndexPath.row;

NSInteger toRow = destinationIndexPath.row;

[arrayM exchangeObjectAtIndex:fromRow withObjectAtIndex:toRow];

[tableView reloadData];

}

//单元格的点击事件

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

Movie* mo = (Movie*)[arrayM objectAtIndex:[indexPath row]];

NSLog(@"...%@",mo.title);

NSLog(@"...%@",mo.money);

NSLog(@"...%@",mo.description);

EditViewController* editVC = [[EditViewController alloc]init];

editVC.editMovie = mo;

editVC.navigationItem.title = mo.title;

[self.navigationController pushViewController:editVC animated:YES];

}

//修改后刷新数据1

-(void)viewWillAppear:(BOOL)animated

{

NSLog(@"..........");

UITableView* tableView = (UITableView*)[self.view viewWithTag:TABLEVIEW];

[tableView reloadData];

}

//添加按钮

-(void)RightDo:(id)sender

{

Movie* mo = [[Movie alloc]init];

[arrayM addObject:mo];

EditViewController* editVC = [[EditViewController alloc]init];

editVC.editMovie = mo;

editVC.navigationItem.title = mo.title;

[self.navigationController pushViewController:editVC animated:YES];

}

//进行排序

-(void)sort

{

NSSortDescriptor* description = nil;

switch (segmentControl.selectedSegmentIndex) {

case 0:

description = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];

break;

case 1:

description = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:NO];

break;

default:

break;

}

[arrayM sortUsingDescriptors:[NSArray arrayWithObject:description]];

[tableViewN reloadData];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 50;

}

/*

//设置表格试图的头部和尾部

-(NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section

{

return @"head";

}

-(NSString*)tableView:(UITableView*)tableView titleForFooterInSection:(NSInteger)section

{

return @"footer";

}

*/

/*

//设置表格试图的头试图和尾试图

-(UIView*)tableview:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section

{

UILabel* label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 10)];

label.text = @"this is the tableView Header View";

label.backgroundColor = [UIColor redColor];

return label;

}

-(UIView*)tableview:(UITableView*)tableView viewForFooterInSection:(NSInteger)section

{

UILabel* label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 10)];

label.text = @"this is the tableView Footer View";

label.backgroundColor = [UIColor redColor];

return label;

}

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

{

return 10;

}

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section

{

return 10;

}

*/

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

(2)tableviewcell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if (self) {

title = [[UILabel alloc]init];

[title setFrame:CGRectMake(10, 0, 80, 40)];

[self.contentView addSubview:title];

money = [[UILabel alloc]init];

[money setFrame:CGRectMake(90, 0, 40, 40)];

[self.contentView addSubview:money];

description = [[UILabel alloc]init];

[description setFrame:CGRectMake(140, 0, 100, 40)];

[self.contentView addSubview:description];

title.backgroundColor = money.backgroundColor = description.backgroundColor = [UIColor whiteColor];

imageV = [[UIImageView alloc]init];

imageV.frame = CGRectMake(200, 0, 40, 40);

[self.contentView addSubview:imageV];

[imageV release];

}

return self;

}

(3)

#import "ShowGViewController.h"

#import "Movie.h"

#import "Cal.h"

#import "EditViewController.h"

#import "ShowCell.h"

@interface ShowGViewController ()<UITableViewDataSource,UITableViewDelegate,UIActionSheetDelegate>

{

UITableView* tableViewM;

NSMutableArray* arrayX; //喜剧电影的数组

NSMutableArray* arrayK; //惊悚电影的数组

NSMutableArray* arrayG; //香港电影的数组

}

@end

@implementation ShowGViewController

- (void)viewDidLoad

{

tableViewM = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 420) style:1];

[tableViewM setDataSource:self];

[tableViewM setDelegate:self];

[tableViewM setBackgroundView:nil];

[tableViewM setBackgroundColor:[UIColor clearColor]];

[self.view addSubview:tableViewM];

[super viewDidLoad];

arrayG = [[NSMutableArray alloc]init];

arrayK = [[NSMutableArray alloc]init];

arrayX = [[NSMutableArray alloc]init];

//3.初始化Movie来显示一些

Movie* movie1 = [[Movie alloc]initWithTitle:@"香港1" andMoney:@"12" andDescription:@"table1"];

Movie* movie2 = [[Movie alloc]initWithTitle:@"香港2" andMoney:@"34" andDescription:@"table2"];

Movie* movie3 = [[Movie alloc]initWithTitle:@"香港3" andMoney:@"56" andDescription:@"table3"];

[arrayG addObject:movie1];

[arrayG addObject:movie2];

[arrayG addObject:movie3];

Movie* movie4 = [[Movie alloc]initWithTitle:@"惊悚1" andMoney:@"12" andDescription:@"table1"];

Movie* movie5 = [[Movie alloc]initWithTitle:@"惊悚2" andMoney:@"34" andDescription:@"table2"];

[arrayK addObject:movie4];

[arrayK addObject:movie5];

Movie* movie6 = [[Movie alloc]initWithTitle:@"喜剧1" andMoney:@"12" andDescription:@"table1"];

Movie* movie7 = [[Movie alloc]initWithTitle:@"喜剧2" andMoney:@"34" andDescription:@"table2"];

[arrayX addObject:movie6];

[arrayX addObject:movie7];

[movie1 release];

[movie2 release];

[movie3 release];

[movie4 release];

[movie5 release];

[movie6 release];

[movie7 release];

UIBarButtonItem* rightButton = [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonItemStyleBordered target:self action:@selector(RightDo:)];

self.navigationItem.rightBarButtonItem = rightButton;

[rightButton release];

}

//添加按钮

-(void)RightDo:(id)sender

{

UIActionSheet* actionSheet = [[UIActionSheet alloc]initWithTitle:@"标题" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"喜剧电影",@"香港电影",@"惊悚电影", nil];

[actionSheet showInView:self.view];

}

-(void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

Movie* mo = [[Movie alloc]init];

EditViewController* editVC = [[EditViewController alloc]init];

if(buttonIndex==0)

{

NSLog(@"喜剧电影");

[arrayX addObject:mo];

}

else if(buttonIndex==1)

{

NSLog(@"香港电影");

[arrayG addObject:mo];

}

else if(buttonIndex==2)

{

NSLog(@"惊悚电影");

[arrayK addObject:mo];

}

editVC.editMovie = mo;

editVC.navigationItem.title = mo.title;

[self.navigationController pushViewController:editVC animated:YES];

}

//修改后刷新数据1

-(void)viewWillAppear:(BOOL)animated

{

[tableViewM reloadData];

}

//DataSource非必须实现

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 3;

}

//DataSource必须实现

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if(section==0)

{

return [arrayG count];

}

else if(section==1)

{

return [arrayK count];

}

else if(section==2)

{

return [arrayX count];

}

return 0;

}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString* CellIdentifier = @"Cell";

//cell的重用

ShowCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell==nil)

{

//初始化一个cell

//这里的Style是一个枚举

cell = [[ShowCell alloc]initWithStyle:0 reuseIdentifier:CellIdentifier];

//这里是在最后面加上一个->

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

}

if([indexPath section]==0)

{

Movie* mm = (Movie*)[arrayG objectAtIndex:indexPath.row];

cell.title.text = mm.title;

cell.money.text = mm.money;

cell.description.text = mm.description;

}

else if([indexPath section]==1)

{

Movie* mm = (Movie*)[arrayK objectAtIndex:indexPath.row];

cell.title.text = mm.title;

cell.money.text = mm.money;

cell.description.text = mm.description;

}

else if([indexPath section]==2)

{

Movie* mm = (Movie*)[arrayX objectAtIndex:indexPath.row];

cell.title.text = mm.title;

cell.money.text = mm.money;

cell.description.text = mm.description;

}

return cell;

}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

if(section==0)

{

return @"香港片";

}

else if(section==1)

{

return @"惊悚片";

}

else if(section==2)

{

return @"喜剧片";

}

return @"";

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

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