问题标签 [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.
swift - Swift 获取协议的所有 KeyPath
在最新版本的 Swift 中,有没有办法获取协议定义的所有变量?想象一下我有类似的东西:
我想要一种获取SomeClass
对象并知道查询变量的方法a
,b
因为这是协议定义的两个。例如,我可能想总结协议中所有变量的值。例如,类似这种非功能代码的东西。
在我的实际用例中,该协议有大约 20 个变量。例如,我不想硬编码一个键数组,因为有人可能会向协议添加一个新变量但忘记更新该数组。我希望它在运行时是动态的。
swift - Swift 4.1 - 子类 UIImage
Overriding non-@objc declarations from extensions is not supported
升级到 Swift 4.1 后使用自定义初始化子类 UIImage 时出现错误
谢谢你的帮助
json - 如何在 Swift 4.1 中将混合值类型字典编码为 JSON
下面的代码在 Xcode 9.2 (Swift 4.0) 中有效,但在 Xcode 9.3 (Swift 4.1) 中出错。
我试过制作字典[String: Encodable]
,并使用typealias
两种字典类型,结果相同。Swift 不允许您在泛型调用中指定类型,因此会产生编译器错误。这在 Swift 4.1 中应该是什么样子?
swift - Swift 中的上标字符串
我正在尝试使我的文本对我的应用程序中的用户更具可读性。我正在从“ https://api.myjson.com/bins/ss5jb的 JSON 中读取我的文本 ”的 JSON 中读取我的文本。有没有办法在我的 collectionView 枚举字符串中为 verseNumber 上标并将其颜色更改为浅灰色?
枚举字符串是配对 verseNumber 和 verse 的最佳方式吗?
swift - 无法通过使用 Where 子句创建扩展来符合协议
我已经创建了一个协议Typographable
,UILabel
实现了这个协议,并且实现在extension Typographable where Self == UILabel
.
它在 swift 4.0 中完美运行,但在 swift 4.1 中不再适用,错误消息是Type 'UILabel' does not conform to protocol 'Typographable'
我已经仔细阅读了 swift 4.1 的CHANGELOG,但我找不到任何有用的东西。
这正常吗,我错过了什么吗?
swift - swift4.1中的JSON解析浮点数有意外行为
一个解析 json 变量并返回浮点数的简单函数。
现在如果我试试这个。
输出很好,但是如果我将23.2322998046875
值更改为23.2322998046
func 返回 nil。
然后我尝试将 Any 转换为 Float ,但这不起作用。
我的代码中有很多浮点数,所以在迁移到 swift 4.1 后我遇到了这个问题。
我应该将所有Float
的 's 更改为Double
's 吗?为什么23.2322998046875
有效,为什么不呢23.2322998
?
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
?
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 是用户搜索位置时返回给我的坐标
swift4 - 当我在表格视图中添加一行时如何更改文本字段中的文本颜色
我有两个按钮。一个是@addIncomeTapped,另一个是@addExpenseTapped。我想要做的是在用户点击(例如)addIncomeTapped 按钮后更改我的文本字段中的文本颜色。我想弄清楚但没有运气:'(我希望有人能帮助我?我还在努力学习更多。提前谢谢。
swift - 为什么我必须实现附加(contentsOf newElements: S) 在我的自定义 RangeReplaceableCollection
我目前正在尝试将自定义集合类型更新为 Swift 4.1。但是,当我遵守文档并实现 and 的所有要求时Collection
,RangeReplaceableCollection
Xcode 仍然抱怨我的类型不符合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 要求实现此功能?
- 如何让我的代码编译?