检查init方法的参数
问题描述:
我正面临一个有点愚蠢的问题,试图编写我的第一个快速类。 我正在为我的类编写一个init方法,并且我想(引发异常)/(以某种方式做某件事)在传递给初始值设定项的参数错误时报告错误。 我的课程很简单:检查init方法的参数
class Phrase: NSObject {
let name : String
let voices : Array<Voice>
init(name: String, voices: Array<Voice>){
if (name == "" || voices.count == 0){
//do something!
}
self.name = name
self.voices = voices
}
}
提前致谢!
答
不要使用init
此 - 使用一类功能,可以如果参数无效,则返回nil
:
class Phrase: NSObject {
var name : String
var voices : Array<Voice>
init() {
self.name = "something safe"
self.voices = [Voice]()
}
class func phraseOrNil(name: String, voices: Array<Voice>) -> Phrase? {
if (name == "" || voices.count == 0){
let p = Phrase()
p.name = name
p.voices = voices
return p
} else {
return nil
}
}
}
...然后你可以在主代码中优雅地失败(或者如果你真的想抛出异常,如上所示)。另请参阅How should I handle parameter validation Swift,但这不涉及您的例外问题。
另请注意,我将let
声明更改为var
,因为我们需要更改其值。
+1
最重要的是,我会建议使用NSError,为您的代码的用户提供更多信息。 – Atomix 2014-09-02 07:43:48
[正确的方法来处理初始化失败]可能的重复(http://*.com/questions/24295740/proper-way-to-handle-a-fail-to-init) – 2014-09-02 07:39:10
可能的重复af [我应该如何处理参数验证Swift](http://*.com/questions/24250363/how-should-i-handle-parameter-validation-swift) – 2014-09-02 07:39:50