【发布时间】:2015-08-11 23:29:37
【问题描述】:
我有以下类(这很简单,它本身存在而不是在需要的地方对其属性和方法进行编码的唯一原因是这样我就可以对它进行子类化),事实证明它非常困难.
class ParseSubclass{
let object: PFObject
init (objectPassed: PFObject){
object = objectPassed
}
init (queryPassed: PFQuery, toCallWhenLoadFinishes: () -> ()){
func toCallUponCompletion (response: PFObject){
object = response
toCallWhenLoadFinishes()
}
findFirstObjectsInBackgroundFromLocalDataStoreIfPossible(queryPassed, toCallUponCompletion: toCallUponCompletion)
}
}
错误,
无法分配给“self”中的“object”。
在以下行被抛出:object = response。
我知道在初始化之后不可能分配给let 值,但特别是在类的init 方法中,它是允许的,如Swift documentation 中所述。
由于我只在初始化器内部将值赋予object,我将如何更改代码以明确告诉编译器我用来设置它的函数将仅在初始化器内部使用?还是我必须以某种方式欺骗编译器?或者我想要完成的事情是不可能的?
(注意:我尝试将object 声明为var,但它也引发了更多错误,包括:
- 在线:
func toCallUponCompletion (response: PFObject){“变量‘self.object’在被初始化之前使用过 - 在线:
findFirstObjectsInBackgroundFromLocalDataStoreIfPossible(queryPassed, toCallUponCompletion: toCallUponCompletion)- “在初始化所有存储属性之前,在方法调用‘findFirstObjectsInBackgroundFromLocalDataStoreIfPossible’中使用‘self’” - 在下一行:(只有一个
}在这一行上)- 从初始化程序返回而不初始化所有存储的属性
提前感谢您的帮助。
【问题讨论】:
-
ParseSubclass 是另一个类的子类吗?
-
没有。我想命名有点混乱,但是由于这个类不会直接使用而只是子类,所以我给它起了这个名字。
-
@user3650087 在这种情况下,
ParseSuperclass或ParseBase将是更合适的名称。