我已将swift项目更新为Swift 4.1,突然一些代码显示错误。
您能建议我如何处理这些错误吗?
import Foundation
class HotCase : BaseResponse {
enum HotCaseStatus : String {
case New = "New"
case InProgress = "In Progress"
case Cancel = "Cancelled"
case Complete = "Completed"
}
var Id: String?
var STATUS: String?
var CreateDate: String?
var UpdateBy: String?
var TYPE: String?
var CASENUMBER: String?
var REASON: String?
var InternalId: String?
var ORIGIN: String?
var SUBJECT: String?
var DESCRIPTION: String?
var CLOSEDATE: String?
var UpdateDate: String?
var CreateBy: String?
var ACCOUNTID: String?
var isGotDetail: Bool = false
var HotCaseStatus: HotCaseStatus? {
get {
if let state = STATUS {
switch state {
case HotCaseStatus.New.rawValue :
return .New
case HotCaseStatus.InProgress.rawValue :
return .InProgress
case HotCaseStatus.Cancel.rawValue :
return .Cancel
case HotCaseStatus.Complete.rawValue :
return .Complete
default: ()
}
}
return nil
}
}
}
当我尝试以防万一时,我得到了错误显示“ HotCaseStatus”的用法。
谢谢。
答案 0 :(得分:2)
var hotCaseStatus: HotCaseStatus? {
get {
if let state = STATUS {
switch state {
case HotCaseStatus.New.rawValue :
return .New
case HotCaseStatus.InProgress.rawValue :
return .InProgress
case HotCaseStatus.Cancel.rawValue :
return .Cancel
case HotCaseStatus.Complete.rawValue :
return .Complete
default: ()
}
}
return nil
}
}
您使用的属性名称与枚举名称相同,因此会出现问题。
答案 1 :(得分:0)
如果您遵循变量名以小写字母开头,结构名和枚举名以大写字母e开头的命名约定,则可以轻松避免此类术语的混淆。
HotCaseStatus
。 hotCaseStatus
一个类型和一个类型的实例不能具有相同的名称,即歧义。
尽管如此,可以将计算属性的主体简化为
var hotCaseStatus: HotCaseStatus? {
return HotCaseStatus(rawValue: STATUS ?? "")
}