问题标签 [swift4.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
437 浏览

swift - Swift 获取协议的所有 KeyPath

在最新版本的 Swift 中,有没有办法获取协议定义的所有变量?想象一下我有类似的东西:

我想要一种获取SomeClass对象并知道查询变量的方法ab因为这是协议定义的两个。例如,我可能想总结协议中所有变量的值。例如,类似这种非功能代码的东西。

在我的实际用例中,该协议有大约 20 个变量。例如,我不想硬编码一个键数组,因为有人可能会向协议添加一个新变量但忘记更新该数组。我希望它在运行时是动态的。

0 投票
2 回答
1349 浏览

swift - Swift 4.1 - 子类 UIImage

Overriding non-@objc declarations from extensions is not supported升级到 Swift 4.1 后使用自定义初始化子类 UIImage 时出现错误

谢谢你的帮助

0 投票
1 回答
1156 浏览

json - 如何在 Swift 4.1 中将混合值类型字典编码为 JSON

下面的代码在 Xcode 9.2 (Swift 4.0) 中有效,但在 Xcode 9.3 (Swift 4.1) 中出错。

我试过制作字典[String: Encodable],并使用typealias两种字典类型,结果相同。Swift 不允许您在泛型调用中指定类型,因此会产生编译器错误。这在 Swift 4.1 中应该是什么样子?

0 投票
2 回答
1539 浏览

swift - Swift 中的上标字符串

我正在尝试使我的文本对我的应用程序中的用户更具可读性。我正在从“ https://api.myjson.com/bins/ss5jb的 JSON 中读取我的文本 ”的 JSON 中读取我的文本。有没有办法在我的 collectionView 枚举字符串中为 verseNumber 上标并将其颜色更改为浅灰色?

枚举字符串是配对 verseNumber 和 verse 的最佳方式吗?

0 投票
1 回答
796 浏览

swift - 无法通过使用 Where 子句创建扩展来符合协议

我已经创建了一个协议TypographableUILabel实现了这个协议,并且实现在extension Typographable where Self == UILabel.

它在 swift 4.0 中完美运行,但在 swift 4.1 中不再适用,错误消息是Type 'UILabel' does not conform to protocol 'Typographable'

我已经仔细阅读了 swift 4.1 的CHANGELOG,但我找不到任何有用的东西。

这正常吗,我错过了什么吗?

0 投票
1 回答
1740 浏览

swift - swift4.1中的JSON解析浮点数有意外行为

一个解析 json 变量并返回浮点数的简单函数。

现在如果我试试这个。

输出很好,但是如果我将23.2322998046875值更改为23.2322998046func 返回 nil。

然后我尝试将 Any 转换为 Float ,但这不起作用。

我的代码中有很多浮点数,所以在迁移到 swift 4.1 后我遇到了这个问题。

我应该将所有Float的 's 更改为Double's 吗?为什么23.2322998046875有效,为什么不呢23.2322998

0 投票
2 回答
2045 浏览

swift - 如何在 Swift 中将 Self 用于方法返回类型?

此代码会生成 Xcode 错误消息,引导您转圈。假设我有一个称为协议的协议Marker,我希望标记能够复制自己。这是第一个猜测...

(我不确定如何正确使用,因为我在The Swift Programming LanguageSelf文档中找不到它。如果您知道它在哪里记录,请在答案中包含它。)

该代码在标记的行上给出了错误:Cannot convert return expression of type 'Marker1' to return type 'Self'并建议修复:Insert ' as! Self'

我接受修复:

这会导致另一个编译器错误:'Self' is only available in a protocol or as the result of a method in a class; did you mean 'Marker1'?

如果我接受那个“修复”,它会回到原来的错误。我将其称为 Xcode 中的错误。让我们试试别的东西:

另一个错误:Method 'copy()' in non-final class 'Marker1' must return `Self` to conform to protocol 'Marker'

制作课程final确实修复了错误。但是有没有办法做到这一点而不使班级决赛?记录在哪里Self

0 投票
2 回答
273 浏览

json - Google Directions Api URL 返回 nil

我正在尝试使用 Google 路线 API 获取路线。到目前为止我所做的一切都有效。我有搜索功能,可以保存搜索到的位置(使用谷歌的建议位置),然后它会在那里放置一个标记。

我刚刚添加了一些代码,这些代码将使用 Google Directions API 从特定位置(在本例中为我的当前位置)绘制地图。我的应用程序可以跟踪我的位置和所有内容,我没有遇到任何问题。

当我尝试创建在下面附上屏幕截图的 URL 时,我的保护声明中不断出现“错误:无法创建 URL”错误,但我还是有点困惑。它说 key= 的地方就是我输入我的 API 密钥的地方。我显然没有在此屏幕截图中包含它,因为这将使每个人都可以访问我的 API 密钥。

我继续并实际使用打印的 urlString(显示在控制台中)并将 URL 复制到我的网页,它运行良好。它显示了我希望它显示的内容(据我所知),甚至尝试在网页中没有密钥的情况下它仍然有效。有没有人遇到过这个问题?我已经做了传输安全域异常,所以那里没有问题。

我附上了下面的代码。currentLatitude/Longtitude 和 searchedLatitude/Longitude 都是 CLLocationDegrees 类型。Current 是我当前的位置坐标,并且 searched 是用户搜索位置时返回给我的坐标

0 投票
1 回答
239 浏览

swift4 - 当我在表格视图中添加一行时如何更改文本字段中的文本颜色

我有两个按钮。一个是@addIncomeTapped,另一个是@addExpenseTapped。我想要做的是在用户点击(例如)addIncomeTapped 按钮后更改我的文本字段中的文本颜色。我想弄清楚但没有运气:'(我希望有人能帮助我?我还在努力学习更多。提前谢谢。

这是我的表视图控制器

0 投票
1 回答
1119 浏览

swift - 为什么我必须实现附加(contentsOf newElements: S) 在我的自定义 RangeReplaceableCollection

我目前正在尝试将自定义集合类型更新为 Swift 4.1。但是,当我遵守文档并实现 and 的所有要求时CollectionRangeReplaceableCollectionXcode 仍然抱怨我的类型不符合RangeReplaceableCollection.

这是该问题的mcve(由 Hamish 慷慨提供,谢谢您:)

根据文档,代码应该编译:

要将 RangeReplaceableCollection 一致性添加到您的自定义集合,请添加一个空初始化程序和 replaceSubrange(_:with:) 方法到您的自定义类型。RangeReplaceableCollection 使用此初始化程序和方法提供了所有其他方法的默认实现。

不幸的是,事实并非如此。相反,Xcode 会发出以下错误消息:

为了确保它不是文档中的错误,我检查了 Swift 4.1 的源代码func append<S>(contentsOf newElements: S) where S: Sequence, Element == S.Element并在 RangeReplaceableCollection.swift 中找到了默认实现,第 442-452 行:


问题:

  • 尽管提供了默认实现,为什么 Xcode 要求实现此功能?
  • 如何让我的代码编译?