通过NSUbiquitousKeyValueStore实现数据的跨设备缓存

因为搬瓦工App需要缓存的数据量很小,所以使用UserDefaults来缓存数据。昨天在TG群里有用户提出能否实现iCloud跨设备的数据同步,这在有多个设备时非常有必要。于是花了点时间研究了一下iCloud相关的API,结果发现实现难度比我想象的要...

iOS

最简单的方式为UITableView添加empty view

在 UITableView 或 UICollectionView 列表数据为空时,我们一般会显示一些提示信息,姑且称它为 Empty View,这已经是很通用的做法了,但其实并没有通用的实现方式,至少 Apple 没有提供。在以前的项目中,我都是使用...

iOS

以Closure的方式优雅地为UIControl addTarget

习惯了ES6的闭包,回到Swift下发现为UIButton手动添加一个点击事件,实在是太ugly,你得先定义一个方法(selector),然后用OC时代的方式去call,最不方便的是传参数,尤其是你想使用本地变量的时候。 研究了一下,实现了以Clos...

iOS

将iOS付费App转换成免费加内购模式的最佳实践

前段时间上线我的第一个收费App——瓦工助手,虽然有下载,但一天一两个的下载量实在是有点太少。于是打算把付费下载改成付费加应用内购买的模式,看看下载量和收益是否有提升。下面记录一下将收费改成免费加内购的最佳实现方式。 因为是之前是付费下载的,让已购买...

iOS

iOS开发的那些坑(五)

今天收到一个瓦工助手用户的反馈,说磁盘和流量的数据显示不正确,刚开始还挺奇怪的,因为App上线这么久还没听说过有这样的问题,直到他截图发过来,看到数字是负数,才意识到可能是数字溢出了。 跟踪了一下代码,发现我对磁盘空间和流量统计里用的都是Int(因...

iOS

iOS开发的那些坑(四)

在瓦工助手App里会显示磁盘空间和流量的使用情况,API返回的单位是B,为了方便,使用了ByteCountFormatter来转换成可读的GB或MB,没想到还踩坑里了。 要不是用户在Telegram群里反馈说App里显示的流量数据和搬瓦工后台的不完全...

iOS

iOS开发的那些坑(三)

为一个View添加UIGestureRecognizer事件,会block所有SubViews的Touch事件,也就是说Touch事件先到UIGestureRecognizer,默认不会往子View继续传递。 画个图说明一下在我现在项目中的一个使用场...

iOS

iOS开发的那些坑(二)

最近在给公司的App增加简体中文的支持,这在iOS里会新建一个Localizable.strings文件(其实Android更简单),然后再把需要本地化的字符串都写在这里就好了。 公司的项目比较大,有几千个字符串需要翻译,吭哧吭哧搞了两天,总算搞完了...

iOS

iOS开发的那些坑(一)

准备做成一个系列,不定时更新,记录iOS开发中碰到的那些坑。 习惯了用XCode Interface Builder来开发iOS UI,方便快捷,但经常会碰到一些莫名其妙的坑,比如今天就碰到了在UICollectionViewCell中的UIBu...

iOS

Remove directory from remote repository after adding them to .gitignore

将不该提交到远程的文件或目录提交到git服务器是件很恼人的事,即使后面把它们加到了.gitignore,服务器上的提交还一直在。那有没有什么办法把已经提交到服务器之后又被添加到.gitignore里的文件移除呢?答案是肯定的,其实非常简单,几行命令就可以搞定:

iOS
12