相关疑难解决方法(0)

DateFormatter的方法date(from:String)在Swift中以特定语言的特定日期返回nil

我真的不知道这段代码发生了什么,我正在尝试将字符串转换为日期.我不明白的是,转换适用于大多数日期,但不适用于仅2个日期.

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"

dateFormatter.dateFromString("1 de octubre")
dateFormatter.dateFromString("2 de octubre")
dateFormatter.dateFromString("3 de octubre")
dateFormatter.dateFromString("4 de octubre")
dateFormatter.dateFromString("5 de octubre")
dateFormatter.dateFromString("6 de octubre")
dateFormatter.dateFromString("7 de octubre")
dateFormatter.dateFromString("8 de octubre")
dateFormatter.dateFromString("9 de octubre")
dateFormatter.dateFromString("10 de octubre")
dateFormatter.dateFromString("11 de octubre")
dateFormatter.dateFromString("12 de octubre")
dateFormatter.dateFromString("13 de octubre")
dateFormatter.dateFromString("14 de octubre")
dateFormatter.dateFromString("15 de octubre")
dateFormatter.dateFromString("16 de octubre")
dateFormatter.dateFromString("17 de octubre")
dateFormatter.dateFromString("18 de octubre")
dateFormatter.dateFromString("19 de octubre")
dateFormatter.dateFromString("20 de octubre")
dateFormatter.dateFromString("21 de octubre")
dateFormatter.dateFromString("22 de octubre") …
Run Code Online (Sandbox Code Playgroud)

macos nsdate nsdateformatter ios swift

16
推荐指数
1
解决办法
794
查看次数

实例化的可选变量在Xcode调试器中显示为nil

自从我升级到Xcode 11和Swift 5.1以来,我遇到了一个奇怪的问题-实例化了一个可选变量后,它在Xcode调试器中仍然显示为nil!

我有一个可选的类变量,称为booking

var booking: Booking?
Run Code Online (Sandbox Code Playgroud)

类型Booking

public struct Booking: Codable {
    var id: Int?
    var start_time: Date?
    var payment_currency: String = "USD"
    var payment_amount: Int?
}
Run Code Online (Sandbox Code Playgroud)

当我单步执行代码时,可以booking在分配代码之前看到它……这太好了:

在此处输入图片说明

然后在分配之后...什么,还是零??:

在此处输入图片说明

我想知道是否以某种方式将其视为惰性变量。但这并不是零,因为可以访问它:

在此处输入图片说明

搜索了一会儿之后,我想知道我在Xcode中的构建模式是否没有设置其“调试可执行文件”标志。但是确实如此。我什至清理并重新构建了该项目,并确定了该标志。

在此处输入图片说明

无论booking是在变量视图中查看还是p booking在控制台视图中输入,它都显示为nil。

这里发生了什么?我需要在升级之前调试的可预测性。

更新

我总结了一种重现此问题的简单方法。首先,创建一个空的单视图项目并将其添加到AppDelegate.swift的顶部:

public struct Booking: Codable {
    var start_time: Date?
    var payment_currency: String = "USD"
}
Run Code Online (Sandbox Code Playgroud)

然后将这些行添加到应用程序(_:didFinishLaunchingWithOptions :) func:

booking = Booking()
print("booking.payment_currency = \(booking?.payment_currency ?? "NULL")")
Run Code Online (Sandbox Code Playgroud)

如之前和在运行时一样设置断点,请注意,即使在分配调试器后,调试器也将预订显示为nil,就像我原来的情况一样。

然后注释掉start_time变量,重新运行,并注意现在调试器显示booking被分配有后的值,正如人们所期望的那样。

因此,看起来像这样的结构中的Date变量(可选或不可选)使调试变得混乱。特别是Date变量-将变量更改为其他类型,例如Int,Int?,String,String?...,没有问题。 …

debugging xcode swift xcode11 swift5.1

7
推荐指数
2
解决办法
288
查看次数

标签 统计

swift ×2

debugging ×1

ios ×1

macos ×1

nsdate ×1

nsdateformatter ×1

swift5.1 ×1

xcode ×1

xcode11 ×1