我正在尝试在属性观察器方法(didSet
和willSet
)中实现一些验证规则,并且我正在尝试throw
在闭包中使用。这是一个说明性示例:
enum SomeClassError: ErrorType {
case NumberNotPositive
}
class SomeClass {
var PositiveNumber: Int {
willSet(value) {
guard value > 0 else {
throw SomeClassError.NumberNotPositive
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然,编译器会抱怨,Error is not handled because the enclosing function is not declared 'throws'
我真的不知道didSet
实际上在哪里声明throws
。
你知道是否有办法在属性观察器方法中抛出错误?
这是我的RectangleView
:
import UIKit
class RectangleView: UIView
{
init(frame: CGRect)
{
// Initialization code
super.init(frame: frame)
}
/*
override func drawRect(rect: CGRect)
{
// Drawing code
}
*/
}
Run Code Online (Sandbox Code Playgroud)
我RectangleView
在我的上面添加CustomViewController
:
import UIKit
class CustomViewController: UIViewController
{
var ballX:Int = 0
var ballY:Int = 0
let BALLWIDTH:Int = 50
let BALLHEIGHT:Int = 50
var navigationHeight:Double = 0.0
var pos:CGPoint?
var rectangleView:RectangleView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically …
Run Code Online (Sandbox Code Playgroud) Xcode向我显示以下警告:
该应用程序实际上是环球.
我该如何解决此警报?
我正在尝试使用单例进行核心数据.以前,我已经成功地通过CoreDataStack.h/.m
在Objective-C中创建一个类,调用下面的默认堆栈方法及其各自的托管对象上下文,并且非常有效:
//RETURNS CoreDataStack
+ (instancetype)defaultStack {
static CoreDataStack *defaultStack;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
defaultStack = [[self alloc]init];
});
return defaultStack;
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用Swift项目,我一直在努力将其转换为最新的Swift语法.我该怎么做呢?这是我到目前为止的尝试:
class func defaultStack() -> Self {
var defaultStack: CoreDataStack
var onceToken: dispatch_once_t = 0
dispatch_once(&onceToken) {
defaultStack = self.init()
}
return defaultStack
}
Run Code Online (Sandbox Code Playgroud)
和我的Xcode生成错误: