问题标签 [swift4]
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 - 如何将 [String : Any] 转换为 [NSAttributedStringKey : Any]
在处理一些 objC API 时,我收到了一个在 SwiftNSDictionary<NSString *, id> *>
中转换为[String : Any]
的,我用于NSAttributedString.addAttributes:range:的。
但是,此方法签名现在已随 Xcode 9 更改,现在需要一个[NSAttributedStringKey : Any]
.
如何将 a 转换[String : Any]
为 a [NSAttributedStringKey : Any]
?
swift - Swift4 转换后的“'init' 已弃用”警告
在 Swift3 中,我之前使用以下方法将 Bool 转换为 Int
转换为 Swift4 后,我收到“'init' is deprecated”警告。这应该怎么做?
ios - 使用 NSKeyValueObservation 观察 UserDefaults 中的值
我想使用 Swift 4 中基于块的 KVO 来观察UserDefaults
. 我可以这样做来观察WKWebView
's的关键路径,estimatedProgress
但没有成功,UserDefaults
因为提供的关键路径不是它正在寻找的。仅提供一个字符串是不够的(无法推断通用参数“值”),为其添加前缀\
是不够的(表达式类型不明确,没有更多上下文)。创建KeyPath
观察值的正确方法是UserDefaults
什么?
swift - Xcode 9 - 无法加载从笔尖引用的“sampleImage”图像
我使用 Xcode 9.0 beta 将 Swift 3.1 转换为 Swift 4.0 语法,但我遇到了一个奇怪的问题。我在项目中 Assets 文件夹中的图像未加载到我的真实设备上。我收到此信息Could not load the “sampleImage” image referenced from a nib
。在模拟器中一切正常。谁能解释一下,为什么?
更新
将我的 iOS 更新到后,iOS 11
我可以在我的应用程序中看到图像。但这是否意味着安装在 iOS 10 及更早版本上的应用程序在显示图像时会出现问题?
json - 使用 JSONEncoder 编码/解码符合协议的类型数组
我正在尝试使用 Swift 4 中的新 JSONDecoder/Encoder 找到对符合 swift 协议的结构数组进行编码/解码的最佳方法。
我做了一个小例子来说明这个问题:
首先我们有一个协议标签和一些符合这个协议的类型。
然后我们有一个类型文章,它有一个标签数组。
最后我们对文章进行编码或解码
这是我喜欢的 JSON 结构。
问题是在某些时候我必须打开 type 属性来解码 Array 但要解码 Array 我必须知道它的类型。
编辑:
我很清楚为什么 Decodable 不能开箱即用,但至少 Encodable 应该可以工作。以下修改后的 Article 结构编译但崩溃并显示以下错误消息。
这是 Codeable.swift 的相关部分
来源:https ://github.com/apple/swift/blob/master/stdlib/public/core/Codable.swift
swift - Swift 4:以协议作为关联类型的通用协议的实现
我在 Swift 3.1 到 Swift 4 代码库迁移期间遇到了问题。
当您尝试实现一个泛型协议方法时,就会出现问题,该方法采用带有泛型参数的闭包,并将协议作为关联类型。这比听起来容易:)
以下代码在 Swift 3.1 中运行良好:
然而,在 Swift 4 编译器中,我给出了一个关于类Foo
不符合协议FooType
且foo(action:)
缺少方法实现的错误。
顺便说一句,Xcode 9“修复它”生成了与我相同的实现。
如果我BarType
用作参数类型,则代码会编译,但丢失具体类型信息并不好。
ios - iOS:面向 iOS 9 时使用 Swift 4
Swift 4 添加了一些非常酷的特性,比如强类型键路径和使用Codable
.
我想在仍然针对 iOS 9 及更高版本的同时使用这些新功能。
据我了解,Swift语言版本不绑定iOS版本,例如与Foundation框架相反。但是,如果这是正确的,我找不到任何信息。
面向 11 岁以上的 iOS 时,我可以使用 Swift 4 吗?
swift - 无法调用非函数类型“ThreadConfined.Type”的值 - Swift 4.0
我将我正在处理的项目升级到 Swift 4.0。这样做之后,我意识到这不是最好的主意。我已经修复了所有错误,但有一个并无法弄清楚。我已经在我的项目中安装了 RealmSwift,并且在其中一个 Realm 文件中出现以下错误。
错误:无法调用非函数类型“ThreadConfined.Type”的值
关于升级的教训太快了。我希望有人能帮我一把,这样我就可以重新开始发展了。有什么想法吗?