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问题集锦

iOS 开发问题集锦(三)的更多相关文章

  1. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...

  2. iOS 开发问题集锦(一)

    最近在QQ群里好多人问一些比较基础的问题,在这罗列一下: 1.键盘上的斜杠键坏掉了,怎么样用快捷键进行注释呢? 首先在Xcode中注释的默认快捷键为:command+/: 其次可以自行修改快捷键:Xc ...

  3. IOS开发之路三(XML解析之KissXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  4. 【ios开发】ios开发问题集锦

    1. ARC forbids explicit message send of'release' 'release' is unavailable: not available inautomatic ...

  5. IOS开发之路三(XML解析之GDataXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  6. ios开发runtime学习三:动态添加方法(实际应用少,面试)

    #import "ViewController.h" #import "Person.h" /* 1: Runtime(动态添加方法):OC都是懒加载机制,只要 ...

  7. iOS 开发:TCP三次握手连接

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...

  8. iOS 开发问题集锦(二)

    办公机器原来是别人在用,Xcode也是用别人的账号下载的.昨天想升级Xcode的时候,发现没有密码,为了不打扰别人,也为了方便自己之后升级,于是乎把旧版本直接卸载掉,重新下载了全新的4.6版. 下载完 ...

  9. 【Swift 2.2】iOS开发笔记(三)

    1.UITableView 中调用 UIButton 的 setTitle 会闪 滚动列表时比较明显,解决办法: buttonType 改成 custom 即可,但是这样一来 UIButton 的高亮 ...

随机推荐

  1. Access denied for user: &#39;root@localhost&#39; (Using password: YES)

    centos 设备mysql成功后 首次使用root登录发生:Access denied for user: 'root@localhost' (Using password: YES) 因为mysq ...

  2. VirtualBox更改虚拟机磁盘VDI的大小

    流程虚拟机中使用,有时会遇到磁盘大小是不够的,假设一套"动态分配的内存".通过下面的方法来手动扩展磁盘空间. 1.启动CMD命令行.进入VirtualBox安装文件夹.例如 cd  ...

  3. 国籍控件(js源码)

    国籍控件(js源码) 一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件, ...

  4. C# winform调用WebBrowser经典怪问题总结

    原文:C# winform调用WebBrowser经典怪问题总结 最近一直研究网页数据采集,单单采集数据,其实HtmlAgilityPack就足够了. 对HtmlAgilityPack感兴趣的可以到这 ...

  5. PHP 以POST方式提交XML、获取XML,最后解析XML

    以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> & ...

  6. CSS3 实现六边形Div图片展示效果

    原文:CSS3 实现六边形Div图片展示效果 效果图: 实现原理: 这个效果的主要css样式有: 1.>transform: rotate(120deg); 图片旋转 2.>overflo ...

  7. web浏览器中javascript

    1.异步载入一个js代码function loadasync(url) { var head = document.getElementsByTagName("head")[0]; ...

  8. DynamicResource与StaticResource的区别

    原文:DynamicResource与StaticResource的区别 2008-06-20 12:16:12 静态资源在第一次编译后即确定其对象或值,之后不能对其进行修改.动态资源则是在运行时决定 ...

  9. CentOS 5.8安装SugarCRM 6.5版本

    环境:CentOS 5.8,安装了Asterisk 1.8 升级php到5.2SugarCRM 6.5:  Minimum PHP version required is 5.2.0. You are ...

  10. "手机信号放大器" 让手机信号增强的办法

    我的住处信号及其的差,电话基本打不进来,放大器的话便宜的也得一百多,于是自己尝试各种办法让自己的手机有信号,于是奇迹般的成功了: 将手机放于铁缸内,并45度角斜放,刚好淹没手机为佳.于是信号奇迹般的3 ...