问题标签 [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 投票
1 回答
1619 浏览

ios - 无法将类型 '(_) -> ()' 的值分配给类型 '((String, String, String, Int) -> ())?'

我有一个这样定义的闭包,

像这样更新的,

像这样使用它,

错误:

无法将类型 '(_) -> ()' 的值分配给类型 '((String, String, String, Int) -> ())?'

但这给了我以上错误,不知道该怎么办?

同样适用于 Swift 3.x。

0 投票
0 回答
313 浏览

swift3 - 使用 NSDocument 保存文件的最佳方法?

正如我在调试区域中看到的那样,我在保存文档时遇到了问题:

该应用程序尝试自动保存一个名为“test copy.xml”的文件,这样做只是将该文件重命名为“test copy~.xml”,为什么找不到原始文件。实际上更改选项参数保存数据错误消失了。这是我在 NSDocument 子类中使用的代码:

NSData.WritingOptions我们可以找到一些保存文件的选项,但我不确定我需要哪些选项。有人愿意向我解释它们是什么以及使用我选择的“writeSafely”方法最好的方法是什么?

该方法还处理可能的错误,因此非原子写入操作似乎就足够了,但我想知道如何保留 macOS 的“版本控制”功能。

0 投票
2 回答
6732 浏览

swift - 如何在 Swift 4 中使用 Realm?

我正在尝试在新的 Xcode 9 beta 中运行我当前的项目,但是当我这样做时,它会显示Module compiled with Swift 3.1 cannot be imported in Swift 4.0. 我怎么解决这个问题?我没有使用 cocoapods。

0 投票
2 回答
1927 浏览

ios - Swift 4 向后兼容

我在 Xcode 8.3.3 (Swift 3.1) 的项目中有以下代码:

但在 Xcode 9 Beta (Swift 4) 中,我收到以下错误:

可选类型“CGFont?”的值 未拆封;你的意思是用'!' 或者 '?'?

该错误是因为CGFont 的初始值设定项现在CGDataProvider返回一个可选值。

但是当我应用以下修复时:

该代码不再在 Xcode 8.3.3 和 Swift 3.1 中编译,因为字体不是可选的,因此不能很好地与!.

有没有办法在两个版本的 Xcode 中都可以做到这一点?Swift 4 是否应该向后兼容(使用 Swift 3 编译器编译)?

0 投票
4 回答
8360 浏览

swift - 除非您是 Apple,否则“扩展程序可能不包含存储的属性”?我错过了什么?

苹果为什么能做到这一点:

...我不能这样做:

并得到两个错误:

  • 'weak' 只能应用于类和类绑定协议类型,而不是 '<<error type>>'
  • 扩展可能不包含存储的属性

我真正想做的是在 10.13 之前的 OSX 版本上提供实体属性,因此也欢迎对此提出其他建议。

0 投票
3 回答
6320 浏览

barcode - 适用于 iOS 11 的 Vision Framework 条码检测

我一直在对 Apple 在 WWDC2017 中引入的新 Vision 框架进行测试。我正在专门研究条形码检测 - 在从相机/画廊扫描图像后,我已经能够得到它是否是条形码图像。但是,在查看barcodeDescriptor 时,我看不到实际的条形码值或有效负载数据。https://developer.apple.com/documentation/coreimage/cibarcodedescriptor页面上似乎没有任何内容可以识别任何属性。

我收到这些错误:

  • 无法连接到远程服务:错误域 = NSCocoaErrorDomain 代码 = 4097“连接到名为
    com.apple.BarcodeSupport.BarcodeNotificationService 的服务”
  • libMobileGestalt MobileGestalt.c:555:无法访问 InverseDeviceID(参见问题/11744455>)
  • 连接到名为 com.apple.BarcodeSupport.BarcodeNotificationService 的服务错误
    域 = NSCocoaErrorDomain 代码 = 4097

有没有办法从 VNBarcodeObservation 访问条形码值?任何帮助将不胜感激。谢谢!这是我正在使用的代码:

0 投票
0 回答
113 浏览

swift - 从约束协议继承的通用协议的约束

我正在尝试像这样利用泛型。

我在以下定义中遇到错误B

同类型约束类型“X”不符合要求的协议“Y”

但是,X确实符合Y...

DataPoint我尝试使用像这样的中间关联类型

但我得到同样的错误。是否有可能在 Swift 4 中完成这种事情,还是我必须制定两个完全独立的协议?

0 投票
2 回答
9045 浏览

ios - 如何在 swift 4 中正确使用选择器

我已经阅读了许多教程甚至 Apple 官方文档,并且一定不明白这段代码有什么问题。

在运行时,我单击 textField 并出现 UIDatePicker。选择器指向的函数被执行。一旦我单击 UIDatePicker 之外的 UI 对象,应用程序就会崩溃并出现以下错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[YourApp.PromiseViewController dueDateChanged:]:无法识别的选择器发送到实例 0x100b12ae0”

我不明白的是,最初识别出“选择器”或指向所需函数的指针。但是,当我从另一个 UI 对象触发另一个事件时,会引发此异常。

为什么会这样?

datePickerValueChanged()最初调用时不应该触发此异常吗?

0 投票
1 回答
1329 浏览

ios - 除非嵌套是数组,否则 Swift `Decodable` 不适用于嵌套的 JSON 对象

我已经开始转换一些 JSON 解析代码以使用新的 AppleDecodable协议,并且遇到了一个在 Apple 测试期间感觉太基本以至于无法错过的阻止程序,所以我想知道我是否在做一些愚蠢的事情。简而言之,我正在尝试解析这样的 JSON 图,因为我只是在解码,所以我认为符合 Decodable 应该就足够了,但从错误看来,我需要符合 Codable (Decodable & Encodable) 以获得所需解码效果:

它适用于这种情况:

as 是嵌套对象的数组,但不是单个对象。

这是一个 Swift 错误还是我做错了什么?

这是一个可以证明问题的示例游乐场。如果 Animal 类符合Decodable它不会解析数组案例,但如果我将 Animal 设置为符合,Codable那么它确实有效。我不希望会出现这种情况,因为我在这里只解码 JSON。

0 投票
1 回答
1292 浏览

ios11 - 状态码 400:使用 URLSession.shared.dataTask 调用的 NSHTTPURLResponse

这是我在将 iOS 11 (15A5304i) 和 Xcode 9 (9M137d) 更新到最新测试版后开始遇到的问题。

当我恢复到以前的测试版时,它就消失了。

对网站进行任何 GET https 调用都会导致来自服务器的 400 响应。

这就是我打电话的方式

这就是生成请求的方式:

同样,这在以前的 iOS 11 测试版上运行良好,但是新版本会在对 Web 服务器的 https 调用上产生 400 响应,几乎没有数据。

值得注意的是,我首先调用了托管在https://api.yelp.com/上的 Yelp 端点 API 。此连接成功,没有任何问题。对其他主机( https://stackoverflow.com、https : //www.yelp.com )的任何进一步调用都会返回 400。

当我使用旧测试版在模拟器中运行代码时,它工作正常,当我部署到使用新 iOS 的 iPhone 6 时,它会从服务器产生 400。

我没有针对我拥有的服务器对此进行测试,因此我可以查看日志,但是在此过程中出现了一些问题,导致服务器以错误的请求响应返回。这些相同的调用使用 curl、postman、浏览器和以前的 iOS 版本可以正常工作。

我希望遇到同样问题的人能有所启发。