问题标签 [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.

0 投票
3 回答
5957 浏览

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]

0 投票
2 回答
7764 浏览

swift - Swift4 转换后的“'init' 已弃用”警告

在 Swift3 中,我之前使用以下方法将 Bool 转换为 Int

转换为 Swift4 后,我收到“'init' is deprecated”警告。这应该怎么做?

0 投票
1 回答
4418 浏览

ios - 使用 NSKeyValueObservation 观察 UserDefaults 中的值

我想使用 Swift 4 中基于块的 KVO 来观察UserDefaults. 我可以这样做来观察WKWebView's的关键路径,estimatedProgress但没有成功,UserDefaults因为提供的关键路径不是它正在寻找的。仅提供一个字符串是不够的(无法推断通用参数“值”),为其添加前缀\是不够的(表达式类型不明确,没有更多上下文)。创建KeyPath观察值的正确方法是UserDefaults什么?

0 投票
2 回答
1436 浏览

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 及更早版本上的应用程序在显示图像时会出现问题?

0 投票
4 回答
38320 浏览

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

0 投票
12 回答
39893 浏览

ios - 导航栏 rightbaritem 图像按钮错误 iOS 11

此代码在 ios10 中运行正常。我得到了我的标签和一个图像按钮,它是用户照片配置文件,圆形.. 好的。但是当运行 xcode 9 ios11 模拟器时,我把它拉长了。按钮框架必须是 32x32 ,当检查 sim 并获取视图并告诉 xcode 描述视图时,我得到的输出为 170x32 或类似的东西。

这是我的代码。

在此处输入图像描述

0 投票
2 回答
1195 浏览

swift - Swift 4:以协议作为关联类型的通用协议的实现

我在 Swift 3.1 到 Swift 4 代码库迁移期间遇到了问题。

当您尝试实现一个泛型协议方法时,就会出现问题,该方法采用带有泛型参数的闭包,并将协议作为关联类型。这比听起来容易:)

以下代码在 Swift 3.1 中运行良好:

然而,在 Swift 4 编译器中,我给出了一个关于类Foo不符合协议FooTypefoo(action:)缺少方法实现的错误。

顺便说一句,Xcode 9“修复它”生成了与我相同的实现。

如果我BarType用作参数类型,则代码会编译,但丢失具体类型信息并不好。

0 投票
1 回答
10456 浏览

ios - iOS:面向 iOS 9 时使用 Swift 4

Swift 4 添加了一些非常酷的特性,比如强类型键路径和使用Codable.

我想在仍然针对 iOS 9 及更高版本的同时使用这些新功能。

据我了解,Swift语言版本不绑定iOS版本,例如与Foundation框架相反。但是,如果这是正确的,我找不到任何信息。

面向 11 岁以上的 iOS 时,我可以使用 Swift 4 吗?

0 投票
2 回答
617 浏览

swift - 无法调用非函数类型“ThreadConfined.Type”的值 - Swift 4.0

我将我正在处理的项目升级到 Swift 4.0。这样做之后,我意识到这不是最好的主意。我已经修复了所有错误,但有一个并无法弄清楚。我已经在我的项目中安装了 RealmSwift,并且在其中一个 Realm 文件中出现以下错误。

错误:无法调用非函数类型“ThreadConfined.Type”的值

关于升级的教训太快了。我希望有人能帮我一把,这样我就可以重新开始发展了。有什么想法吗?

0 投票
4 回答
26447 浏览

swift - 如何在 Core Data 中使用 swift 4 Codable?

Codable 似乎是一个非常令人兴奋的功能。但我想知道我们如何在 Core Data 中使用它?特别是,是否可以直接从/到 NSManagedObject 编码/解码 JSON?

我尝试了一个非常简单的例子:

在此处输入图像描述

并定义Foo了自己:

但是当像这样使用它时:

编译器因以下错误而失败:

并且目标文件是定义的文件Foo

我想我可能做错了,因为我什至没有通过 a NSManagedObjectContext,但我不知道该把它贴在哪里。

核心数据支持Codable吗?