Swift开发
文章平均质量分 56
落叶刺客
邮箱:aishiqichun@163.com
展开
-
从文件中读取字符串
问题:如何从磁盘文件中读取字符串儿,然后按行将其倒序输出? 下面一段材料取自陈寿《三国志》卷三十五诸葛亮传,我把它分成了10段,现在要求从磁盘文件中读取这段文字,然后按照一定的规则倒序输出。比如说,如果我要求输出3行,系统会依次输出第10、9、8三行;如果我要求输出20行,则系统会依次输出10、9、8 ... 3、2、1行;如果我要求输出0行,则系统什么也不做。(01) 自董卓已来,豪杰并起原创 2017-09-21 05:50:44 · 6819 阅读 · 0 评论 -
判断一个字符串中是否包含另一个字符串
问题:如何判断一个字符串儿是否包含另一个字符串儿? 其实,字符串儿String里面本身就包含一个contains()方法,它可以在一定程度上判断一个字符串儿里面是否包含另一个字符串儿。但是,它比较傻,所能做的工作有限,比如说:"Hello, July".contains("July") // 其返回值为true"Hello, July".contains("july") // 其返回值原创 2017-09-21 05:50:05 · 12102 阅读 · 0 评论 -
判断两个字符串是否包含相同的字符
问题:如何判断两个字符串儿是否包含相同的字符? 两个字符串儿包含相同的字符,是指它们所包含的字符个数相同,并且每个字符串儿中的字符都能在另一个字符串儿中找到与之一一对应的字符,但是并不拘泥于字符的排列顺序。比如说字符串“xiaomi”和“ximaio”就包含相同的字符,而“xiaomi”与“XiaOmi”以及“wocaoxiaomi”就不包含相同的字符。 确定了什么是包含相同的字符之后,我原创 2017-09-21 05:50:03 · 16373 阅读 · 2 评论 -
项目基本架构的搭建
一、启动图片的设置 项目启动图片的设置有多种方式,但是通常情况下,都是用LaunchImage来管理的。具体的操作方式比较简单,但是一定要注意,当你设置LaunchImage作为启动图片时,一定不要忘记把Launch Screen File中的文字给删除,并且在运行程序之前,最好是把之前运行过的程序给删掉:设置启动图片的细节.png二、初始化项目 项目配置完成以后,通常情况下,需要原创 2017-09-21 05:49:18 · 3605 阅读 · 0 评论 -
来搞一搞UserNotifications本地通知
UserNotificationsUserNotificationsUIHuman Interface Guidelines - NotificationsLocal and Remote Notification Programming GuideIntroduction to NotificationsAdvanced NotificationsWhat's New in the Apple原创 2017-09-21 05:49:55 · 561 阅读 · 0 评论 -
判断字符串中的字符是否具有唯一性
问题:如何判断输入的字符串儿中的每个字符是否都具有唯一性? 我们先来随便定义一个可以输入字符串儿的函数,然后再调用这个函数,看看返回的结果是否和我们预期的结果一致:func challenge(input: String) -> Bool { return true}challenge(input: "No duplicates") // 应该返回truechall原创 2017-09-21 05:49:58 · 1894 阅读 · 0 评论 -
判断一个字符串是否是回文
问题:如何判断一个字符串儿是否是回文? 所谓的字符串儿回文,就是无论是正序读还是反序读,它都是一毛一样的,比如说字符串儿“rotator”,无论是从左往右读,还是从右往左读,它都是同一个字符串儿。 思路:因为回文是正着读和反着读是一样的,所以我们马上就想到了reversed()函数。而这个函数的返回值是一个数组,因此最后肯定会用到数组的比较。好在数组属于集合,是值类型,比较起来就容易多了:原创 2017-09-21 05:50:00 · 3805 阅读 · 0 评论 -
自定义UITabBarController、UITabBar和UIButton
通常情况下,在实际开发过程中经常需要自定义UITabBarController,并且很有可能还涉及到自定义UITabBar和UIButton的情况。就以闲鱼为例,我们尝试着模仿一下它。 为了更好的演示和说明,整个演示项目都将使用纯代码来搭建。所以,来到AppDelegate文件中,实现以下代码:func application(_ application: UIApplication, didFi原创 2017-10-14 09:06:05 · 2095 阅读 · 0 评论 -
低仿蜻蜓UI
我已经有好长时间没有更新博客了,主要是懒癌发作,刚好最近闲暇时间模仿了一下蜻蜓FM的UI界面。一级界面除了首页的广播模块没有找到数据接口没有做之外,其它的基本上做完了。直播界面的cell做得不完整,比如说左上角显示的“直播中”或者预约直播、右下角显示的在线人数、右上角显示的大咖等级,以及左下角显示的热度等小挂件都没有做,不过数据已经解析完成了,等哪天有空的时候再补充上去。先来看一下总体预览: 在来原创 2017-11-18 21:41:58 · 473 阅读 · 0 评论 -
处理直播界面cell上面的小挂件
上回说到直播界面数据解析完了,但是cell上面显示正在直播和在线收听人数,以及预约直播时间等小挂件的数据解析完了,但是UI界面没有做出来,今天终于抽空做完了,先来看一下预览效果: 这个做起来其实非常的简单,只需要把所有的小挂件都添加上去,然后默认它们都隐藏,最后根据服务器返回的数据来决定最终需要显示哪些、隐藏哪些。唯一稍微麻烦一点的是预约透明控件的处理,这里面主要有两个点:第一个,服务器返回的时间原创 2017-11-21 11:11:54 · 722 阅读 · 0 评论 -
通过服务器返回的数据来创建子控制器
如果你有看过这个项目之前的代码,肯定知道我在搭建首页模块的时候,是通过离线数组来创建子控制器的:/// 创建子控制器private func setupChildViewControllers() { // FIXME: - 从网络获取标题的Tabs,然后通过JSON来设置标题 // 创建子控制器的标题 let titles = ["分类", "推荐", "精品", "直播"原创 2017-11-26 15:02:08 · 361 阅读 · 0 评论 -
隐藏导航栏并重建全屏pop手势
在实际开发过程中,经常碰到push到下一个控制器时,需要隐藏它底部的tabBar和顶部的navigationBar,并且pop回来之后,底部的tabBar和顶部的navigationBar又需要复原。那么,这种功能是如何实现的呢?我们先来看一下没有隐藏tabBar和navigationBar之前的界面:一、隐藏底部的tabBar 隐藏底部tabBar的功能最容易实现,通常情况下,原创 2018-01-31 18:42:32 · 969 阅读 · 0 评论 -
通过xib自定义控件所遇到的自动布局大坑
虽然说,在很多情况下,使用Storyboard或者xib开发具有方便快捷的优点,但是,如果使用不熟练的话,将会面临许多巨大无比、令人沮丧的坑。为了尽快踩到这些天坑,我还是决定用Storyboard和xib来搞一搞。 我准备搭建下面这样的界面,因此考虑用xib来创建顶部明星打榜。用xib的好处是,布局好第一个明星板块,其它两个直接使用Ctrl+D,再进行总体布局就可以了。如果是使用纯代码的话…原创 2018-01-31 20:38:27 · 886 阅读 · 0 评论 -
计算特定字符在字符串中出现的次数
问题:随便给定一个字符串儿,如何计算一个特定字符在该串儿中出现的次数? 比如说,我现在给定这样一段字符串儿:“The US State Department on Friday has officially delivered notice to the UN of its intentions to withdraw from the 2015 Paris climate pact.”,你能原创 2017-09-21 05:50:08 · 1858 阅读 · 0 评论 -
从一个字符串儿中移除重复的字符
问题:如何从一个给定的字符串儿中移除重复的字符? 需要注意的是,我们只需要移除二次出现的字符,并不是要将所有重复的字符都从给定的字符串儿中删除。比如说“fannnnnny”这个字符串儿,我们只需要将其修改为“fany”就可以了,而不是要将其修改为“fay”。如果不考虑原始字符串儿中剩余字符的顺序,只需要利用Set中不能出现重复元素这一特性就可以了:let string = "funny"/原创 2017-09-21 05:50:10 · 917 阅读 · 0 评论 -
求平方根或近似平方根
问题:给定一个正整数,如果它有正整数平方根,则求出它的平方根;如果它没有正整数平方根,则求出最接近的正整数平方根。不能使用sqrt(_: )函数。 比如说,5、6、7、8都是没有正整数平方根的,但是最接近它的正整数平方根是2,而9的正整数平方根是3。现在要求写一个函数,能够计算出给定正整数的正整数平方根,或者最接近它的正整数平方根。 这个问题的解决方案有好几种,我们先来给一个性能比较差,并原创 2017-09-21 05:50:42 · 1884 阅读 · 0 评论 -
判断一个整数是否为素数
问题:给定一个正整数,如何判断它是否为素数? 素数,又称之为质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数被称为素数。func challenge(number: Int) -> Bool { // 只有当输入的整数是大于等于2时,题目才有意义 guard number >= 2 else { return false }原创 2017-09-21 05:50:39 · 7727 阅读 · 0 评论 -
交换两个数
问题:如果要求不使用临时变量,应该如何交换两个变量的值? 解决这个题的方式有好几种,第一种当然就是使用系统自带的swap(_: _:)函数了。不过,这种抖机灵的做法一般人很难欣赏,而且说不定它内部实现使用了临时变量也说不定:// 这是使用临时变量的做法,也是我们在C语言中常用的做法func swap1(_ a: inout T, _ b: inout T) { let tmp =原创 2017-09-21 05:50:37 · 298 阅读 · 0 评论 -
自己写一个pow()函数
问题:请自己动手写一个pow()函数。 我们在学习C语言的时候,可能已经接触过pow()函数,它是C语言标准库函数中自带的一个函数,使用的时候只需包含就可以了,不需要你自己动手去实现。 在C语言标准库函数中,pow()函数是这样声明的double pow(double x, double y),其作用就是返回x的y次幂。幂函数的实现还是比较简单的,我们就自己动手写一个:func chal原创 2017-09-21 05:50:34 · 3905 阅读 · 1 评论 -
在一定范围内生成随机数
问题:给定一个最小正整数和一个最大正整数,如何在它们之间生成随机数(包含上下界)? 如果你有一定的开发经验,肯定用过随机颜色对某些控件做调试。实际上,生成随机颜色的实质也就是在一定范围内生成随机数。常用的生成随机数的函数是arc4random_uniform(_ __upper_bound: UInt32) -> UInt32,在使用它的时候有几点需要注意:1、它生成的随机数范围是[0,原创 2017-09-21 05:50:31 · 4424 阅读 · 0 评论 -
逻辑分支和嵌套三目运算
问题:找出1~100中所有能被3整除,或者能被5整除,或者既能被3整除又能被5整除的数。 如果只是单纯的问题求解,那么这个答案就比较简单了,只要逻辑捋顺畅了,用常规的for ... in循环就可以解决:func challenge() { for i in 1...100 { if i % 3 == 0 && i % 5 == 0 { prin原创 2017-09-21 05:50:29 · 1178 阅读 · 0 评论 -
如何逆转一个字符串
问题:给定一个字符串儿,如何对其进行逆转操作? 比如说给定一个字符串儿"Just Do IT",我们需要将其逆转成"tsuJ oD TI",那么这个又该如何去操作呢?这个可能一时不好操作。不过,如果是一个独立的单词,那就比较好办了:先调用字符串儿的characters属性,将其内容转换成字符集合,然后再调用reversed()函数,将字符集合里面的内容进行逆转,最后再将这些字符集合重新转换成S原创 2017-09-21 05:50:26 · 1007 阅读 · 0 评论 -
如何返回一个字符串中多个单词相同的前缀
问题:给定一组单词,如何返回这些单词中最大的前缀? 需要说明的是,这里所说的前缀并不是指英语语法里面的前缀,而是指多个单词前面出现的相同部分。比如说,abandon和abandoned的最大前缀就是指“abandon”,而abandon、abandoned和abbreviation的最大前缀是“ab”。如果给一个英语字典,或者单词表就比较容易理解了:英语单词表.png 解题过程中还是原创 2017-09-21 05:50:23 · 1077 阅读 · 0 评论 -
字符串的应用举例
问题:给定两个字符串,如何确保这两个字符串长度相等,并且字符串儿中不同字符出现的个数不能超过3个? 上面的问题有两个限定条件:首先,两个字符串儿的长度要相等;其次,允许它们拥有不同的字符,但是不同字符存在的个数不能超过3个。顺着这两个限定条件,我们整理一下思路,很容易就能想出解决的方案。可以用guard或者if-else来对两个字符串儿进行校验,从而保证它们的长度相等。推荐使用guard,因为原创 2017-09-21 05:50:21 · 2900 阅读 · 0 评论 -
判断一个字符串中是否包含全部26个字母
问题:给定一个字符串儿,如何判断它里面是否包含全部26个英文字母? 就以CGTN今天的头版新闻为例,如何判断下面这段字符串儿中是否包含全部的英文字母?字符串儿.png 其实思路很简单,动手数一数就知道了原创 2017-09-21 05:50:16 · 5001 阅读 · 2 评论 -
如何删除字符串中多余的空格
问题:如何将一个字符串儿中多余的空格给删掉? 需要注意的是,我们只要求删除多余的空格,但是并不要求把所有的空格都删掉。保留必要的空格是保持原有语义所必须的,如果把句子中所有的空格都删除,那么就会造成多个单词连成一坨而无法辨别。 问题的解决思路还是比较简单的,可以用空格或者换行把字符串儿分割成独立的单词或标点符号,然后将所有的空格都过滤掉,最后再用一个空格把所有的独立的单词或者标点符号重新连原创 2017-09-21 05:50:13 · 3162 阅读 · 0 评论 -
iOS项目练习
最进在练习用storyboard做项目,所以就搞了一个双语版的Demo,不过由于对Objective-C不是特别熟悉,所以Objective-C版本的做得比较慢。总体而言,项目的完成度都不是很高,但是后续一定会慢慢去完善,尽最大限度的去模拟原始项目真实的样子。 Swift项目做得稍微多一点,目前已经开始慢慢的去展示数据。最开始的时候,本来想通过SwiftyJSON做模型转换,但是后来发现服务原创 2018-02-06 17:23:27 · 1311 阅读 · 0 评论