iOS 零星小知识

1、数组和集合的区别是  集合是无序的

2、数据库不能插入空指针,否则访问数据库时,会出错

3、数据库支持的类型  只能是这三种:NSString  NSNumber  NSData

4、存储数据的方式:归档  plist  UserDefault  数据库  coredata  生成的目录只能存的地方是沙盒

5、数据量特别大  用数据库  很难查看 用数据库语句查看    数据库保存表          稍小一点的用plist  双击就可以查看

6、数据库中自增 类型限制就是只能是整型

7、(服务器端)黄金搭档

MySql + 接口 + php  php写服务器的语言+Apache服务器  LAMP平台(免费)

MSSql + .net 语言 + windows + iis  微软全套的

嵌入式设备的数据库  sqlite(3)            轻量级数据库 access(微软的)

sqlite是弱类型  字段处可以不加类型

ls

cd ~/Desktop

sqlite3 data.db

创建表

8、下拉刷新中的上次刷新的时间  存在UserDefault中

9、沙盒  沙盒目录相互独立  不能相互访问  iOS中应用都是沙盒目录

10、  //查询 集合和数组的区别就是 前者无序

FMResultSet * set = [_db executeQuery:@"select * from USER"];//集合

/*

uid  name  score

1    叶开  99

2    傅红雪  98

*/

while ([set next]) {

//取值

//name

NSString * name = [set stringForColumn:@"name"];//取name字段的值

//int

int score = [set intForColumn:@"score"];

//data

//NSData * data = [set dataForColumn:@"image"];

//一般我们会创建一个person的对象将数据存到对象中

//[set objectForColumnIndex:@"score"];这种方法可以获取各种类型的数据 但是取出之后要转化为自己想要的类型

//int double都有自己的方法 但float只能使用这个方法

NSLog(@"%@,%d",name,score);

}

11、数据库主键 唯一键

区别:唯一键可以有多个  唯一键可以为空  主键只有一个主键不能为空

相同点:都不可以重复

1、UIImagePickerController  图片选择器

需要UIImagePickerContrllerDelegate  和 UInavigationControllerDelegate  这两个代理

2、UIImagePickerController的对象ipc

ipc.sourceType 数据源      有三个UIImagePickerControllerSourceTypePhotoLibrary,

UIImagePickerControllerSourceTypeCamera,

UIImagePickerControllerSourceTypeSavedPhotosAlbum

3、UIImagePickerContrllerDelegate  需要实现三个方法

选择照片-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

_imageView.image = [info    objectForKey:UIImagePickerControllerOriginalImage];//拿到照片  然后dismiss

[picker dismissViewControllerAnimated:YES completion:nil];

}

取消选择

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

[picker dismissViewControllerAnimated:YES completion:nil];//取消选择 就dismiss

}

4、将图片转换为NSData类型

NSData * data = UIImagePNGRepresenttation(——imageView.image);向数据库里面存图片不好 可以将图片存到沙盒中  然后将路径存到数据库里

FMDB数据库第三方库

UIActionSheetDelegate

UIImagePickerControllerDelegate

UINavigationControllerDelegate

UIWebViewDelegate  都是系统自己自带的

request.URL.absoluteString webView中请求的地址

ASIHTTPRequest  是数据请求的第三方库  是极其强劲的HTTP访问开源项目  AFNetWorking 必须在ARC下

使用ASIHTTPRequest可以很方便的进行一下操作:同步/异步方式下载数据,定义下载队列,让队列中的任务按指定的并发数来下载(队列下载必须 是异步的),提交表单,文件上传,处理cookie,设置代理,上下载进度条,重定向处理,请求与响应的GZIP,验证与授权。

异步请求

- (void)requestFinished:(ASIHTTPRequest *)request

{

// Use when fetching text data

NSString *responseString = [request responseString];

// Use when fetching binary data

NSData *responseData = [request responseData];

}

使用block

在平台支持下,ASIHTTPRequest1.8以上支持block

- (IBAction)grabURLInBackground:(id)sender

{

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request setCompletionBlock:^{

// Use when fetching text data

NSString *responseString = [request responseString];

// Use when fetching binary data

NSData *responseData = [request responseData];

}];

[request setFailedBlock:^{

NSError *error = [request error];

}];

[request startAsynchronous];

}

声明request时要使用__block修饰符,这是为了告诉block不要retain request,以免出现retain循环,因为request是会retain block的。

使用队列

创建NSOperationQueue或者ASINetworkQueue队列,我们还可以设定最大并发连接数:maxConcurrentOperationCount

1. - (IBAction)grabURLInTheBackground:(id)sender

2. {

3.    if (![self queue]) {

4.       [self setQueue:[[[NSOperationQueue alloc] init] autorelease]];

5.       [self queue].maxConcurrentOperationCount = 4;

6.    }

7.

8.    NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"];

9.    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

10.    [request setDelegate:self];

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

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

13.    [[self queue] addOperation:request]; //queue is an NSOperationQueue

14. }

15.

16. - (void)requestDone:(ASIHTTPRequest *)request

17. {

18.    NSString *response = [request responseString];

19. }

20.

21. - (void)requestWentWrong:(ASIHTTPRequest *)request

22. {

23.    NSError *error = [request error];

24. }

如果不设定selector,那么系统会使用默认的requestFinished: 和 requestFailed:方法

如果需要对队列里面的每个request进行区分,那么可以设定request的userInfo属性,它是个NSDictionary,或者更简单的方法是设定每个request的tag属性,这两个属性都不会被发送到服务器。

不要使用request的URL来区分每个request,因为URL可能会改变(例如重定向),如果需要使用request的URL,使用[request originalURL],这个将永远返回第一个url。

对于ASINetworkQueue

ASINetworkQueue是NSOperationQueue的子类,提供更高级的特性(ASINetworkQueue的代理函数):

• requestDidStartSelector当一个request开始执行时,这个代理函数会被调用。

• requestDidReceiveResponseHeadersSelector当队列中的request收到服务器返回的头信息时,这个代理函数会被调用。对于下载很大的文件,这个通常比整个request的完成要早。

• requestDidFinishSelector当每个request完成时,这个代理函数会被调用。

• requestDidFailSelector当每个request失败时,这个代理函数会被调用。

• queueDidFinishSelector当队列完成(无论request失败还是成功)时,这个代理函数会被调用。

ASINetworkQueues与NSOperationQueues稍有不同,加入队列的request不会立即开始执行。如果队列打开了进度 开关,那么队列开始时,会先对所有GET型request进行一次HEAD请求,获得总下载大小,然后真正的request才被执行。

向一个已经开始进行的ASINetworkQueue 加入request会怎样?

如果你使用ASINetworkQueue来跟踪若干request的进度,只有当新的request开始执行时,总进度才会进行自适应调整(向后 移动)。ASINetworkQueue不会为队列开始后才加入的request进行HEAD请求,所以如果你一次向一个正在执行的队列加入很多 request,那么总进度不会立即被更新。

如果队列已经开始了,不需要再次调用[queue go]。

当ASINetworkQueue中的一个request失败时,默认情况下,ASINetworkQueue会取消所有其他的request。要禁用这个特性,设置 [queue setShouldCancelAllRequestsOnFailure:NO]。

ASINetworkQueues只可以执行ASIHTTPRequest操作,二不可以用于通用操作。试图加入一个不是ASIHTTPRequest的NSOperation将会导致抛出错误。

取消异步请求

取消一个异步请求(无论request是由[request startAsynchronous]开始的还是从你创建的队列中开始的),使用[request cancel]即可。注意同步请求不可以被取消

安全地控制delegate防止request完成之前代理被释放

request并不retain它们的代理,所以有可能你已经释放了代理,而之后request完成了,这将会引起崩溃。大多数情况下,如果你的代理即将被释放,你一定也希望取消所有request,因为你已经不再关心它们的返回情况了。如此做:

1. // 代理类的dealloc函数

2. - (void)dealloc

3. {

4.    [request clearDelegatesAndCancel];

5.    [request release];

6.    ...

7.    [super dealloc]

登陆网页的服务器,用网络抓包工具抓取登陆信息, 想要用自定义的post发给服务器的登陆信息,直接登陆,用的是ASIFormDataRequest  *request

ASIFormDataReques实现图片上传

1. 如果是 Get ,或者参数可以简单的组成 Get 方式提交的时候, 比如  thread.php?id=123 , 就用  ASIHTTPRequest 就可以了

原因是简单

2. 如果必须是 POST ,或者参数很多,你要构造一个带参数的 URL 很麻烦的时候,就用  ASIHttpFormDataRequest

用来接受图片标示符,并且使用 AFNetworking 的 AFImageRequestOperation 下载图片。

AFN默认没有封装同步请求,如果开发者需要使用同步请求,则需要重写getPath:parameters:success:failure方法,对 AFHTTPRequestOperation进行同步处理;而ASI则是直接通过调用一个startSynchronous方法

此外AFN针对JSON、XML、PList和Image四种数据结构封装了各自处理器,开发者可以把处理器注册到操作队列中,直接在回调方法中获得格式 化以后的数据。在示例工程中就使用了JSON处理器:把AFJSONRequestOperation注册到操作队列里。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,603评论 5 465
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,422评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,478评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,116评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,037评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,832评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,075评论 3 389
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,685评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,976评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,028评论 2 315
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,830评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,584评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,101评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,229评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,521评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,121评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,314评论 2 339

推荐阅读更多精彩内容

  • 一、什么是ASIHTTPRequest 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,AS...
    Bo_cake阅读 323评论 0 1
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,357评论 0 6
  • 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就...
    独酌丿红颜阅读 2,353评论 18 60
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,539评论 18 139
  • 序言目 前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就...
    阶梯阅读 461评论 0 1