iOS-关于子类内选项的Swift和解析错误

iOS-关于子类内选项的Swift和解析错误,ios,swift,parse-platform,subclass,optional,Ios,Swift,Parse Platform,Subclass,Optional,我实现了一个名为Filler.swift的Parse子类,它包含五个保存在Parse后端的变量 在尝试使用此子类将数据保存到解析后端时,我遇到错误:致命错误:在展开可选值时意外发现nil 这是导致错误的代码(在self.object.username=username行上): 我发现这与我如何处理我的子类中的可选变量有关,但解析文档并不清楚如何做到这一点。下面是我的子类代码: class Fillup : PFObject, PFSubclassing { var amount : Strin

我实现了一个名为
Filler.swift
的Parse子类,它包含五个保存在Parse后端的变量

在尝试使用此子类将数据保存到解析后端时,我遇到错误:
致命错误:在展开可选值时意外发现nil

这是导致错误的代码(在self.object.username=username行上):

我发现这与我如何处理我的子类中的可选变量有关,但解析文档并不清楚如何做到这一点。下面是我的子类代码:

class Fillup : PFObject, PFSubclassing {

var amount : String? {

    get {

        return self["amount"] as? String

    }

    set{

        self["amount"] = newValue

    }

}

var cost : String? {

    get {

        return self["cost"] as? String

    }

    set{

        self["cost"] = newValue

    }

}


var date : NSDate {

    get {

        return self["date"] as! NSDate

    }

    set{

        self["date"] = newValue

    }

}

var username: String? {

    get{

        return self["username"] as? String

    }

    set {


        self["username"] = newValue

    }
}


var id : Int?{

    get {

        return self["id"] as? Int

    }

}

override class func initialize() {

    var onceToken : dispatch_once_t = 0;

    dispatch_once(&onceToken) {

        self.registerSubclass()

    }

}

class func parseClassName() -> String {

    return "Fillup"
}
}


任何帮助都将不胜感激

您是否尝试添加一个?像这样:
self.object?.username=username

感谢您消除了错误:)现在来看看为什么它没有保存到解析后端,但我想这是另一天的问题了lolWait nevermind,现在我对对象应用的任何内容都是零?即使给它硬编码的值“7”,它仍然被存储为nil变量。这就是我的想法。我认为还有一个更大的问题。但是我需要在语法分析时阅读文档。您必须在初始化
self.object
代码
var object:Fillup?
初始化
object
为零的地方发布代码。您试图在对象中“保存”的所有内容都将显示为
nil
,这是有道理的,因为
object
本身就是nil。您需要通过调用来初始化对象,例如,
self.object=Fillup()
(或指定的初始化器是什么)。这基本上就是我在对你的另一个问题的评论中所说的。我编写了一个python脚本来自动为你生成这些子类()。正如上面所做的那样,您需要将属性定义为可选的,因为您不能保证任何属性的值都是非零的。在您的情况下,似乎您正在尝试访问currentUser,由于没有用户登录,该用户可能为零。你的子类化看起来不错。Parse SDK可以在幕后自动生成访问这些属性的代码。检查:
class Fillup : PFObject, PFSubclassing {

var amount : String? {

    get {

        return self["amount"] as? String

    }

    set{

        self["amount"] = newValue

    }

}

var cost : String? {

    get {

        return self["cost"] as? String

    }

    set{

        self["cost"] = newValue

    }

}


var date : NSDate {

    get {

        return self["date"] as! NSDate

    }

    set{

        self["date"] = newValue

    }

}

var username: String? {

    get{

        return self["username"] as? String

    }

    set {


        self["username"] = newValue

    }
}


var id : Int?{

    get {

        return self["id"] as? Int

    }

}

override class func initialize() {

    var onceToken : dispatch_once_t = 0;

    dispatch_once(&onceToken) {

        self.registerSubclass()

    }

}

class func parseClassName() -> String {

    return "Fillup"
}