タプルのsynataxがswitch enumの場合として欠けています。私はエラーを取得しています二つの条件の場合にはタプルによる列挙型スイッチ
public protocol QueryType {
var predicate: NSPredicate? { get }
var sortDescriptors: [SortDescriptor] { get }
}
public enum Query: QueryType {
case id(Int)
case owner(String)
case isSent(Bool)
public var predicate: NSPredicate? {
switch self {
case .id(let value):
return NSPredicate(format: "id == %d", value)
case (.owner(let value1), .isSent(let value2)):
return NSPredicate(format: "owner == %@ AND isSent == %@", value1, NSNumber(booleanLiteral: value2)
}
}
public var sortDescriptors: [SortDescriptor] {
return [SortDescriptor(keyPath: "id")]
}
}
:"Tuple pattern cannot match values of the non-tuple type 'MyType.Query'"
はそれも可能ですか?その後、switch
で事前に
case .ownerIsSent(let value1, let value2):
return NSPredicate(format: "owner == %@ AND isSent == %@", value1, NSNumber(booleanLiteral: value2))
おかげとして、case ownerIsSent(String, Bool)
の作成について
EDIT
何!
あなたは 'self'を' switch'しています。これは 'Query'型で、'(Query、Query)のタプルではありません。 –
@NicolasMiariよかった!だから私が必要としているのは、switch(self、self)? – noname
私はどちらもうまくいくとは思わない。 'self'は可能なケースの一つにしかなりません。私はタプルが行く方法だとは思わない。おそらくデータ型を再考する必要があります –