我有个问题,不知道怎么解决。我有几个枚举,它们返回一个字符串,在项目中的每个地方都使用,在一个单独的textPhrases文件上。
我想用它们中的一些来填充一个拾取器(分段的)。
我试图理解如何使用和设置tag元素。
我想让一个静态var返回一个带有[String:Int][rawCaseValue,index]的元组,但是得到以下错误类型'(String,Int)'不符合'hashable';只有结构/枚举/类类型才能符合协议
下面是我的代码示例。第二个拾取器工作得很好,但是我想重构它以使用枚举提供的字符串。
// TextPhrases.swift
// Zinnig
import SwiftUI
enum SalutationClient: String, CaseIterable {
case noChoice = "…"
case sir = "Meneer"
case mrs = "Mevrouw"
case miss = "Mejuffrouw"
static let all = SalutationClient.allCases.map { $0.rawValue }
static var allIndexed : [(String, Int)]{
var tupleArray: [(String, Int)] = []
var ind : Int = 0
for salut in SalutationClient.all //allCases.map({ $0.rawValue })
{
tupleArray.append( (salut, ind))
ind += 1
}
return tupleArray
}
}
// PersonContentView.swift
// Zinnig
/// Main Person view
struct PersonContentView: View {
@State private var selectedSalutation = 0
/// next line will be removed and replace by an enum with Strings
@State private var dayPart: [String] = ["…", "ochtend", "middag", "avond", "nacht"]
@State private var selectedDayPart = 0
...
Form {
Picker(selection: $selectedSalutation, label: Text("Aanspreken met;")) {
ForEach ( SalutationClient.allIndexed, id: \.self ) { salutTuple in
Text((salutTuple.0)).tag((salutTuple.1))
}
}.pickerStyle(SegmentedPickerStyle())
Picker(selection: $selectedDayPart, label: Text("Selecteer een dagdeel")) {
ForEach(0 ..< dayPart.count) {
Text(self.dayPart[$0]).tag($0)
}
}.pickerStyle(SegmentedPickerStyle())
}
错误为-类型“(String,Int)”不能符合“hashable";只有结构/枚举/类类型才能符合协议
我该如何继续让它工作?
谢谢
你把事情搞得比你需要的复杂多了。看一看Apple's文档,它直接描述了你的用例。
https://developer.apple.com/documentation/swiftui/picker
下面的代码确实解决了我的问题。
// TextPhrases.swift
// Zinnig
enum SalutationClient: String, CaseIterable, Hashable {
case noChoiceMade = "…"
case sir = "Meneer"
case mrs = "Mevrouw"
case miss = "Mejuffrouw"
static let all = SalutationClient.allCases.map { $0.rawValue }
struct TupleStruct: Hashable {
var salutation: String
var index: Int
}
static var allIndexed : [TupleStruct]{
var tupleArray : [TupleStruct] = []
var ind : Int = 0
for salut in SalutationClient.all //allCases.map({ $0.rawValue })
{
tupleArray = tupleArray + [TupleStruct(salutation: salut, index: ind )]
ind += 1
}
print(tupleArray)
return tupleArray
}
}
// PersonContentView.swift
// Zinnig
Picker(selection: $selectedSalutation, label: Text("Select een persoon type;")) {
ForEach(SalutationClient.allIndexed, id: \.self) { salut in
Text(salut.salutation).tag(salut.index)
}
}.pickerStyle(SegmentedPickerStyle())
如果有人对此有意见,请告诉我。我总是对更好的和新的事物敞开心扉。
我的模式如下 我正在尝试编写一个方法来检查代码并返回相应的枚举。 event.getStatusCode的有效值是:A,T,U。现在我需要检查这些代码并根据代码返回枚举。我尝试了上面的方法,但它给我代码=["A"]的错误。下面是错误状态。 我该怎么解决这个问题?我是java新手。非常感谢您的帮助,谢谢
我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举: 现在我想要能够键入类似的内容:
问题内容: def size_of_dir(dirname): print(“Size of directory: “) print(os.path.getsize(dirname)) 是有问题的代码。dirname是一个目录,其中包含 130个 文件,每个文件约 1kb 。当我调用此函数时,它返回 4624 ,这 不是 目录的大小…为什么? 问题答案: 此值(4624B)代表的大小 文件 是 描
本文向大家介绍Java获取枚举的值,包括了Java获取枚举的值的使用技巧和注意事项,需要的朋友参考一下 示例 每个枚举类都包含一个名为的隐式静态方法values()。此方法返回一个包含该枚举的所有值的数组。您可以使用此方法遍历值。重要的是要注意,此方法每次调用时都会返回一个新数组。 如果需要,Set也可以使用EnumSet.allOf(Day.class)。
我想用:调用它。但它不喜欢:
问题内容: 我想声明一个枚举Direction,它具有一个返回相反方向的方法(以下语法不正确,即,不能实例化枚举,但它说明了我的观点)。这在Java中可行吗? 这是代码: 问题答案: 对于那些按标题吸引的人:是的,您可以在枚举中定义自己的方法。如果您想知道如何调用这种非静态方法,则可以使用与其他任何非静态方法相同的方法- 在定义或继承该方法的类型实例上调用它。如果是枚举,则此类实例仅为s。 因此,
问题内容: 迁移到Hibernate 5.2.7之后,我似乎在id字段中得到了不正确的值。 我的代码: Hibernate触发以下查询: 得出5367。表中id字段的最后一个值为5358。 我明白了 我相信这个问题类似于这和这个,但我不得不问,因为给出的解决方案有没有为我工作: 我加了 到我的persistence.xml,但无济于事。任何帮助将不胜感激。 问题答案: 实际上,当您迁移到新的Hib