0
任何人都可以使此代碼更好?我的問題在於,我想要「protein
,kh
和fat
」爲optionals
。但NSNumber
將不接受可選項作爲參數。所以我必須做到這一點非常醜陋的東西。有沒有更好的辦法?如何使NSNumber接受選項
@IBAction func save(){
if nameLabel.text.isEmpty {
Toast.showToast("Name cannot be empty.", view: view)
} else {
let kcal = kcalLabel.text.toInt()
let protein = proteinLabel.text.toDouble() // returns Double?
let kh = khLabel.text.toDouble() // returns Double?
let fat = fatLabel.text.toDouble() // returns Double?
foodItem.name = nameLabel.text
foodItem.kcal = kcal == nil ? nil : NSNumber(integer: kcal!)
foodItem.protein = protein == nil ? nil : NSNumber(double: protein!)
foodItem.kh = kh == nil ? nil : NSNumber(double: kh!)
foodItem.fat = fat == nil ? nil : NSNumber(double: fat!)
foodItem.remarks = remarksLabel.text
foodItem.requireUpdate = NSNumber(bool: true)
foodItem.isdeleted = NSNumber(bool: false)
delegate.addFoodItemViewController(self, didAddFoodItem: foodItem)
Toast.showToast("FoodItem saved.", view: view)
}
}
這裏是模型:
class FoodItem: NSManagedObject {
@NSManaged var name: String
@NSManaged var kcal: NSNumber?
@NSManaged var kh: NSNumber?
@NSManaged var protein: NSNumber?
@NSManaged var fat: NSNumber?
@NSManaged var remarks: String?
@NSManaged var isdeleted: NSNumber
@NSManaged var requireUpdate: NSNumber
@NSManaged var displayOrder: NSNumber
@NSManaged var uid: String?
}
的NSNumber是objC類型,而可選項是在Swift中提供的,並且不使用objC ...不能你只是將NSNumber轉換爲雙例如,可選地展開值? –