iOS 开发问题集锦(三)
iOS 开发问题集锦(三)
介于群里大部分童鞋都是新手,为了大家能够更好的提问,并且提的问题能更好的得到回答,下面写几点提问时的注意事项:
1、认真对待你的问题,在提问题前有过认真的思考;
2、先在 google 搜索,一般的问题都可以找到答案,在天朝google经常会抽抽,这个时候需要大家学会怎么去翻墙;
3、问题具体化,让你的问题处于具体的环境中,把问题阐述清楚,避免大而空洞、需要具体情况来分析、或别人难以读懂的问题;
4、话不在多,尽量提供精确的信息,把信息裁剪的越小越好。这样做有几点好处:首先表明你对你的提问付出了努力,可以增加回答的机会;其次,问题简化后可以使有用答案出现的几率增加;再次,在你提炼问题的时候,也许你自己就能找出问题的所在,然后做出修改;
5、明白你想问的是什么,能给你有用答案的人也正是最忙的人;
6、别用无意义的话语结束提问,例如:“有人能帮我吗?”、“有人在吗?”或者“有答案吗?”之类的话。这样问就是画蛇添足,别人会很厌烦你;
7、尽量别出现错别字,不然看不懂。
希望以上几点能够帮到大家。
下面是此次的问题集锦。
1、怎么分解url字符串,只要问号前边的字符?或各个参数?如下字符串:

NSString *url = @"http://hzd.exi.hotchaleur.com/mp3_64_60/06/fc/06d7480aadbbcbb8bb7cee6f136c05fc.mp3?k=f2a52712bc03c5c3&t=1376447585";

a、以 "?" 来分割为字符串数组,然后取索引为 0 的字符

[url componentsSeparatedByString:@"?"][0]

b、把这个字符转换为 NSURL类型,然后拼接字符串

NSURL *query = [NSURL URLWithString:url];
NSLog(@"url -> http://%@%@", query.host, query.path);

c、写个独立的方法,用字典的方式显示url字符串中的各个参数,此方法只针对正确地url(错误的url请忽略...)

/**
解析查询字符串
query : 查询字符串,以 ‘&’ 分隔
*/
+ (NSDictionary *)parseQueryString:(NSString *)query {
// 定义字典
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; // 检测字符串中是否包含 ‘?’
NSRange range = [query rangeOfString:@"?"];
if(range.location != NSNotFound){
NSArray *queryArr = [query componentsSeparatedByString:@"?"];
[dict setObject:queryArr[0] forKey:@"url"];
query = queryArr[1];
}else{
// 如果一个url连 '?' 都没有,那么肯定就没有参数
return dict;
} // 检测字符串中是否包含 ‘&’
if([query rangeOfString:@"&"].location != NSNotFound){
// 以 & 来分割字符,并放入数组中
NSArray *pairs = [query componentsSeparatedByString:@"&"];
// 遍历字符数组
for (NSString *pair in pairs) {
// 以等号来分割字符
NSArray *elements = [pair componentsSeparatedByString:@"="];
NSString *key = [[elements objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *val = [[elements objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 添加到字典中
[dict setObject:val forKey:key];
}
}else if([query rangeOfString:@"="].location != NSNotFound){ // 检测字符串中是否包含 ‘=’
NSArray *elements = [query componentsSeparatedByString:@"="];
NSString *key = [[elements objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *val = [[elements objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 添加到字典中
[dict setObject:val forKey:key];
} NSLog(@"dict -> %@", dict);
return dict;
}

2、设置App启动页,如下图:

启动页图片分为3中像素:320*480、640*960、640*1136。
首先拖动图片到上图3中相应的位置,然后在工程的AppDelegate.m中的下列方法中设置:

/*
说明:当程序载入后执行
**/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//延时3秒,以便用户看清楚启动页
[NSThread sleepForTimeInterval:3.0]; // 添加启动页
UIImageView *splashScreen = [[UIImageView alloc] initWithFrame:self.window.bounds];
if (iPhone5) {
splashScreen.image = [UIImage imageNamed:@"Default-568h"];
}else{
splashScreen.image = [UIImage imageNamed:@"Default"];
}
[self.window addSubview:splashScreen]; // 启动页渐变效果
[UIView animateWithDuration:0.5 animations:^{
CATransform3D transform = CATransform3DMakeScale(1.0, 1.0, 1.0);
splashScreen.layer.transform = transform;
splashScreen.alpha = 0.0;
} completion:^(BOOL finished) {
[splashScreen removeFromSuperview];
}]; [self.window makeKeyAndVisible]; return YES;
}

3、点击背景视图,收起输入法。
在 - (void)viewDidLoad 中添加如下代码:

// 设置 self.view GestureRecognizer
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleBackgroundTap:)];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];

然后,编写 handleBackgroundTap: 方法

/*
点击背景时关闭键盘
**/
-(void)handleBackgroundTap:(UITapGestureRecognizer *)sender{
[self.userName resignFirstResponder];
[self.userPassword resignFirstResponder];
}

4、删掉字符串中的包含的html标签,以及转义符

/**
删掉字符串中的包含的html标签,以及转义符
strHtml : 含有html标签的字符串
*/
+ (NSString *)stringByStrippingHTML:(NSString *)strHtml{
NSRange r;
NSString *s = [strHtml copy];
while ((r = [s rangeOfString:@"<[^>]+>|&[^;]+;" options:NSRegularExpressionSearch]).location != NSNotFound){
s = [s stringByReplacingCharactersInRange:r withString:@""];
}
return s;
}

5、获得今天为星期几

/**
获得今天为星期几
*/
+ (NSInteger)getweek{
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; comps = [calendar components:unitFlags fromDate:[NSDate date]];
return [comps weekday] - 1;
}

著作权声明:本文由 http://wzrong.cnblogs.com 或者 http://iostour.diandian.com 原创,欢迎转载分享。 请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
原创文章,如需转载请注明出处,谢谢!
欢迎访问本人技术微博 @iOS之旅 相互交流,共同学习,共同进步!
欢迎访问本人微博 @卫志荣
iOS 开发问题集锦(三)的更多相关文章
- 新手必看,史上最全的iOS开发教程集锦,没有之一!
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
- iOS 开发问题集锦(一)
最近在QQ群里好多人问一些比较基础的问题,在这罗列一下: 1.键盘上的斜杠键坏掉了,怎么样用快捷键进行注释呢? 首先在Xcode中注释的默认快捷键为:command+/: 其次可以自行修改快捷键:Xc ...
- IOS开发之路三(XML解析之KissXML的使用)
最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...
- 【ios开发】ios开发问题集锦
1. ARC forbids explicit message send of'release' 'release' is unavailable: not available inautomatic ...
- IOS开发之路三(XML解析之GDataXML的使用)
最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...
- ios开发runtime学习三:动态添加方法(实际应用少,面试)
#import "ViewController.h" #import "Person.h" /* 1: Runtime(动态添加方法):OC都是懒加载机制,只要 ...
- iOS 开发:TCP三次握手连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...
- iOS 开发问题集锦(二)
办公机器原来是别人在用,Xcode也是用别人的账号下载的.昨天想升级Xcode的时候,发现没有密码,为了不打扰别人,也为了方便自己之后升级,于是乎把旧版本直接卸载掉,重新下载了全新的4.6版. 下载完 ...
- 【Swift 2.2】iOS开发笔记(三)
1.UITableView 中调用 UIButton 的 setTitle 会闪 滚动列表时比较明显,解决办法: buttonType 改成 custom 即可,但是这样一来 UIButton 的高亮 ...
随机推荐
- 【百度地图API】手机浏览器抓包工具及其使用方法
原文:[百度地图API]手机浏览器抓包工具及其使用方法 摘要:为了测试地图API在手机浏览器上的性能,需要给手机浏览器设置代理.通过代理,我们可以在PC上获取到抓包数据.进而对性能做进一步分析. -- ...
- 【百度地图API】当地址解析失败时,如何调用search方法查找地址
原文:[百度地图API]当地址解析失败时,如何调用search方法查找地址 有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”. --------------------- ...
- C#中对值类型和引用类型的一点认识
区别值类型和引用类型的重要一点就是值类型赋值的时候是给出一块内存空间,空间里放下要赋给值类型的值.而引用类型是开辟一块内存空间,空间里放下的是要赋给引用类型值的指向地址. 就像一个是复制了银行卡里的现 ...
- mono for android 学习记录
C#开发Android应用实战(全 扫描 中文版) 学习记录: 拖完控件后,不要急着按F5,需要重新生成,才能自动修改 Resource.Designer.cs 文件 1. Activity 是基于a ...
- ios MKNetworkKit 的使用
常用框架比如:AFNetworking,ASIHttpRequest,SDWebImage,MKNetWorKit等. iOS5已出来这么久了,而ASIHttpRequest的作者已经申明不更新了,在 ...
- Linq的理论知识
概述 前面的博客中写到过关于Linq的一些知识,可是,没有具体的说Linq,本篇博客将会说一下Linq. 什么是Linq Linq是一个概念,它实现了数据查询使用同一方式,即,它使我们程序猿通过使用它 ...
- Django教程汇总
Django基础教程 被解放的姜戈01 初试天涯 被解放的姜戈02 庄园疑云 被解放的姜戈03 所谓伊人 被解放的姜戈04 各取所需 被解放的姜戈05 黑面管家 被解放的姜戈06 假作真时 Djang ...
- PhotoShop CC安装抠图插件KnockOut 2
1.KnockOut 2只有32位版本,因此需要给32位的PhotoShop CC安装. 2.下载地址:http://www.cr173.com/soft/28207.html 3.安装KnockOu ...
- [ACM] POJ 2506 Tiling (递归,睑板)
Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7487 Accepted: 3661 Descriptio ...
- Windows下Oracle不显示中文[已解决]
跟着视频学习,然后讲到插入的时候有中文性别,就GG了,该显示中文的时候都是问号,觉得应该是编码的问题. 于是上网找了下,测试可行,方法如下 1,查询Oracle编码的语句: [sql] SELECT ...