# \#Swift

**URL:** https://www.shiqidu.com/tag/84-tag/84.md

[最新](https://www.shiqidu.com/latest.md) · [类别](https://www.shiqidu.com/categories.md) · [标签](https://www.shiqidu.com/tags.md)

---

## [LeetCode - #89 格雷编码](https://www.shiqidu.com/t/topic/880)

<div class="topic-metadata">

**Author:** [@caijizhushou](https://www.shiqidu.com/u/caijizhushou)\
**回复:** 0\
**最近更新：:** [2025 年11 月 8 日 17:04 UTC](https://www.shiqidu.com/t/topic/880 "2025-11-08T17:04:47Z")

</div>

前言 我们社区陆续会将顾毅（Netflix 增长黑客，《iOS 面试之道》作者，ACE 职业健身教练。）的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 88 期，我们会保持更新时间…

---

## [深入 Moya：从架构设计到现代 iOS App 网络层最佳实践](https://www.shiqidu.com/t/topic/874)

<div class="topic-metadata">

**Author:** [@caijizhushou](https://www.shiqidu.com/u/caijizhushou)\
**回复:** 0\
**最近更新：:** [2025 年11 月 8 日 16:44 UTC](https://www.shiqidu.com/t/topic/874 "2025-11-08T16:44:49Z")

</div>

Moya 是 iOS 社区中备受推崇的网络抽象库。它之所以出色，并非仅仅因为简化了网络请求的发送，更在于其背后蕴含的一整套优雅、可扩展的架构设计哲学。本文将和你一起深入剖析 Moya 的核心架构，并结合当下的主流技术（如 Combine），…

---

## [iOS 实现视频边播放边缓存的解决方案](https://www.shiqidu.com/t/topic/863)

<div class="topic-metadata">

**Author:** [@caijizhushou](https://www.shiqidu.com/u/caijizhushou)\
**回复:** 0\
**最近更新：:** [2025 年11 月 6 日 14:30 UTC](https://www.shiqidu.com/t/topic/863 "2025-11-06T14:30:55Z")

</div>

一、技术实现思路 1. 核心组件 AVPlayer：iOS 原生视频播放器，支持网络视频流播放。 AVAssetResourceLoaderDelegate：自定义资源加载器，拦截播放器的请求，动态提供缓存数据。 URLSession：用…

---

## [Xcode 模拟器运行报错 Unable to boot device because it cannot be located on disk.](https://www.shiqidu.com/t/topic/690)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2020 年2 月 28 日 13:58 UTC](https://www.shiqidu.com/t/topic/690 "2020-02-28T13:58:36Z")

</div>

运行项目报错 Unable to boot device because it cannot be located on disk. Domain: NSPOSIXErrorDomain 解决方法 终端执行以下命令 xcrun sim…

---

## [/usr/local/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: no such file or directory](https://www.shiqidu.com/t/topic/670)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年11 月 6 日 13:36 UTC](https://www.shiqidu.com/t/topic/670 "2019-11-06T13:36:15Z")

</div>

升级 macOS 后，执行 pod install 报错如下 /usr/local/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/…

---

## [iOS13-适配夜间模式/深色外观(Dark Mode) \[转\]](https://www.shiqidu.com/t/topic/648)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 27 日 16:19 UTC](https://www.shiqidu.com/t/topic/648 "2019-09-27T16:19:22Z")

</div>

今天的 WWDC 19 上发布了 iOS 13，我们来看下如何适配 DarkMode 首先我们来看下效果图 如何适配 DarkMode DarkMode 主要从两个方面来适配，一是颜色，二是图片，适配的代码不是很多，接下来让我们…

---

## [Swift 已有 array 转 NSMutableArray](https://www.shiqidu.com/t/topic/647)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 22 日 16:07 UTC](https://www.shiqidu.com/t/topic/647 "2019-09-22T16:07:54Z")

</div>

Swift 将 现有的 array 转成 NSMutableArray 的方法 // array 转 NSMutableArray func array2NSMutableArray(\_ array: \[Any\]) -\> NSMutabl…

---

## [Swift 5 获取缓存目录、文章目录和临时目录](https://www.shiqidu.com/t/topic/644)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 18 日 07:50 UTC](https://www.shiqidu.com/t/topic/644 "2019-09-18T07:50:50Z")

</div>

// 文档目录 let DocumentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileMa…

---

## [UserDefaults 数据保存报错：Attempt to set a non-property-list object...](https://www.shiqidu.com/t/topic/643)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 18 日 06:04 UTC](https://www.shiqidu.com/t/topic/643 "2019-09-18T06:04:13Z")

</div>

我尝试用 UserDefaults 保存一个字典，但是报错了，因为数据中有类似 “receipt\_qrcode” = “\< null\>” 的数据，后来在服务端把这些值为 null 的字段改为 空字符串后，正常保存了。 public sta…

---

## [\[UIAlertController supportedInterfaceOrientations\] was invoked recursively! Instead of using present](https://www.shiqidu.com/t/topic/641)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 11 日 10:36 UTC](https://www.shiqidu.com/t/topic/641 "2019-09-11T10:36:48Z")

</div>

解决办法 扩展 UIAlertController extension UIAlertController { open override var supportedInterfaceOrientations: UIInterf…

---

## [iOS 使用 boundingRect 计算 UILabel 的高度不准确的问题](https://www.shiqidu.com/t/topic/636)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年9 月 4 日 04:03 UTC](https://www.shiqidu.com/t/topic/636 "2019-09-04T04:03:37Z")

</div>

写了个cell，需要返回label的高度，但是使用 boundingRect 方法计算，一直都显示不全被折叠，计算方法如下 let titleHeight = model.title?.boundingRect(with: textMax…

---

## [KVO 监听不到 WKWebView 的高度变化](https://www.shiqidu.com/t/topic/631)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年8 月 29 日 09:26 UTC](https://www.shiqidu.com/t/topic/631 "2019-08-29T09:26:50Z")

</div>

使用 WKWebView 加载 H5 页面，想要回去到 H5 页面的高度，然后通过 kvo 监听 H5 高度，代码如下： contentView.scrollView.addObserver(self, forKeyPath: "cont…

---

## [UIAlertController 的 actionSheet 报约束错误](https://www.shiqidu.com/t/topic/630)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年8 月 27 日 07:19 UTC](https://www.shiqidu.com/t/topic/630 "2019-08-27T07:19:38Z")

</div>

模拟器版本：12.4 Xcode 版本：10.3 我使用 UIAlertController 创建了一个 actionSheet，在弹出的时候，会报一个约束错误 我的代码如下 let alertController = UIAler…

---

## [Swift 闭包学习笔记](https://www.shiqidu.com/t/topic/629)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年8 月 22 日 02:45 UTC](https://www.shiqidu.com/t/topic/629 "2019-08-22T02:45:44Z")

</div>

闭包语法 {(params) -\> (returnType) in statements} 字符串数组 let names = \["Chris", "Alex", "Ewa", "Barry", "Daniella"\] 常规写法 fu…

---

## [Swift5.0 No method declared with Objective-C selector 'xxx'](https://www.shiqidu.com/t/topic/589)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年5 月 30 日 07:23 UTC](https://www.shiqidu.com/t/topic/589 "2019-05-30T07:23:11Z")

</div>

写了一段事件监听的代码如下 publishBtn.addTarget(self, action: "publishBtnClick", for: .touchUpInside) 报了警告如下 No method declared wi…

---

## [Swift4 KVC给类属性赋值报错](https://www.shiqidu.com/t/topic/588)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2019 年5 月 29 日 06:51 UTC](https://www.shiqidu.com/t/topic/588 "2019-05-29T06:51:13Z")

</div>

class Person : NSObject { var name : String? var age : Int = 0 override init() { super .init() …

---

## [Swift4给按钮添加点击事件](https://www.shiqidu.com/t/topic/292)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2017 年11 月 20 日 15:12 UTC](https://www.shiqidu.com/t/topic/292 "2017-11-20T15:12:11Z")

</div>

// 监听按钮点击事件 btn.addTarget(self, action: #selector(MainViewController.composeBtnClick), for: UIControlEvents.touchUpIns…

---

## [Swift4动态获取命名空间](https://www.shiqidu.com/t/topic/288)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2017 年11 月 19 日 15:46 UTC](https://www.shiqidu.com/t/topic/288 "2017-11-19T15:46:52Z")

</div>

// 动态获取命名空间 guard let namespace = Bundle.main.infoDictionary!\[&quot;CFBundleExecutable&quot;\] as? String else { …

---

## [Swift基础语法+项目实战视频百度云下载](https://www.shiqidu.com/t/topic/287)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2017 年11 月 19 日 09:00 UTC](https://www.shiqidu.com/t/topic/287 "2017-11-19T09:00:40Z")

</div>

项目实战是微博app的简单实现，看了很久，讲的很详细，想学swift开发的同学不要错过。 链接:百度网盘-链接不存在 密码:lnmz

---

## [swift4自定义Log的简单实现](https://www.shiqidu.com/t/topic/267)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 0\
**最近更新：:** [2017 年11 月 5 日 16:45 UTC](https://www.shiqidu.com/t/topic/267 "2017-11-05T16:45:20Z")

</div>

要求： 显示文件名 显示行号 debug模式下打印log，release模式不打印 首先创建一个flag 代码就非常简单啦 func myLog&lt;T&gt;(\_ message: T, file: String = #f…

---

## [swift扩展数组shuffle函数，随机排序数组](https://www.shiqidu.com/t/topic/220)

<div class="topic-metadata">

**Author:** [@Eureka](https://www.shiqidu.com/u/Eureka)\
**回复:** 1\
**最近更新：:** [2017 年9 月 8 日 06:52 UTC](https://www.shiqidu.com/t/topic/220 "2017-09-08T06:52:09Z")

</div>

大家都知道php有shuffle函数可以很方便的随机排序一个数组，下面分享一个swift的shuffle函数，用于随机排序一个数组。 extension Array{ public func shuffle() -\> Array …
