财产观察员Swift 4 struct Kitchen//协调器 { var foodItems=[FoodItem]()//FoodItem对象的集合。 var wastedItems=[WastedItem]()//WastedItem的集合 var totalSpend=Double() var currentExpense=Double() var weeklyHouseholdFoodBudget=Double() var wastageCost=Double() 初始(原子:双,电流:双,邻接:双,aWastage:双) { self.totalSpend=aTotal self.currentExpense=aCurrent self.weeklyHouseholdFoodBudget=aBudget self.wastageCost=aWastage } 结构FoodItem:可均衡 { var itemName=String() var itemQuantity=Double() var dateOfUse=String() var计量单位=字符串() init(aName:String,aQuantity:Double,aDateOfUse:String,aUnit:String) { self.itemName=aName self.itemQuantity=aQuantity self.dateOfUse=aDateOfUse self.unitOfMeasurement=aUnit } 变异函数listFoodItems() { 对于foodItems中的项目 { 打印(“项目名称:”,Item.getName(),“,”, “数量:”,item.getItemQuantity(),“,”, “单位:”,item.getUnitOfMeasurement(),“,”, 使用日期:,item.getDateOfUse() } } 变异func removeFoodItem(AFOD:FoodItem) { 如果让anIndex=foodItems.index(of:aFood) { foodItems.remove(位于:索引) 打印(aFood.getName(),“已删除”) } } 变异函数useFood(一个项目:inout FoodItem,inputQty:Double) { 如果(aFoodItem.getItemQuantity())-(InputQuantity)

财产观察员Swift 4 struct Kitchen//协调器 { var foodItems=[FoodItem]()//FoodItem对象的集合。 var wastedItems=[WastedItem]()//WastedItem的集合 var totalSpend=Double() var currentExpense=Double() var weeklyHouseholdFoodBudget=Double() var wastageCost=Double() 初始(原子:双,电流:双,邻接:双,aWastage:双) { self.totalSpend=aTotal self.currentExpense=aCurrent self.weeklyHouseholdFoodBudget=aBudget self.wastageCost=aWastage } 结构FoodItem:可均衡 { var itemName=String() var itemQuantity=Double() var dateOfUse=String() var计量单位=字符串() init(aName:String,aQuantity:Double,aDateOfUse:String,aUnit:String) { self.itemName=aName self.itemQuantity=aQuantity self.dateOfUse=aDateOfUse self.unitOfMeasurement=aUnit } 变异函数listFoodItems() { 对于foodItems中的项目 { 打印(“项目名称:”,Item.getName(),“,”, “数量:”,item.getItemQuantity(),“,”, “单位:”,item.getUnitOfMeasurement(),“,”, 使用日期:,item.getDateOfUse() } } 变异func removeFoodItem(AFOD:FoodItem) { 如果让anIndex=foodItems.index(of:aFood) { foodItems.remove(位于:索引) 打印(aFood.getName(),“已删除”) } } 变异函数useFood(一个项目:inout FoodItem,inputQty:Double) { 如果(aFoodItem.getItemQuantity())-(InputQuantity),swift,property-observer,Swift,Property Observer,属性观察器用于属性。 属性观察者的最简单示例 struct Kitchen // Coordinator { var foodItems = [FoodItem] () // Collection of FoodItem objects. var wastedItems = [WastedItem]() // Collection of WastedItem var totalSpend = Double() var currentSpend = Double()

属性观察器用于属性。 属性观察者的最简单示例

struct Kitchen // Coordinator 

{
   var foodItems = [FoodItem] () // Collection of FoodItem objects.
   var wastedItems = [WastedItem]() // Collection of WastedItem 
   var totalSpend = Double()
   var currentSpend = Double()
   var weeklyHouseholdFoodBudget = Double()
   var wastageCost = Double()

   init(aTotal:Double,aCurrent:Double,aBudget:Double,aWastage:Double)
    {
    self.totalSpend = aTotal
    self.currentSpend = aCurrent
    self.weeklyHouseholdFoodBudget = aBudget
    self.wastageCost = aWastage
    }

struct FoodItem : Equatable 
{
    var itemName = String()
    var itemQuantity = Double()
    var dateOfUse = String()
    var unitOfMeasurement = String()

    init(aName:String,aQuantity:Double,aDateOfUse:String,aUnit:String) 
    {
     self.itemName = aName
     self.itemQuantity = aQuantity
     self.dateOfUse = aDateOfUse
     self.unitOfMeasurement = aUnit
    }

   mutating func listFoodItems() 
     {
       for item in foodItems
       {
        print("Item Name:", item.getName(),",",
              "Qunatity:",item.getItemQuantity(),",", 
              "Unit:",item.getUnitOfMeasurement(),",",
              "Date of use:",item.getDateOfUse())
        }
      }

     mutating func removeFoodItem(aFood:FoodItem) 
      {
       if let anIndex = foodItems.index(of: aFood)
       {
       foodItems.remove(at: anIndex)
       print(aFood.getName(),"Has been removed")
       }
      }

      mutating func useFood(aFoodItem:inout  FoodItem,inputQty:Double) 

      {
        if (aFoodItem.getItemQuantity()) - (inputQty) <= 0
        {
         self.removeFoodItem(aFood: aFoodItem)
        }
         else
        {
         aFoodItem.useFoodItem(aQty: inputQty)                 
        }
      }

现在,如果您想显示一些更改,您需要在didSet方法中使用自己的代码来实现这一点.

哪个属性没有反映?您可以显示更多的代码,如removeFoodItem、useFoodItem等吗?另外,请正确格式化您的代码,以便人们可以轻松阅读。对不起,Rakesha Shastri,我是一个新手。我已经包含了更多代码,并试图使其更易于阅读。谢谢。不用担心。您说listFoodItems没有更新列表数量。但据我所见,它只是一种显示方法。因此,在调用列表食物之前,您应该先使用其他两个函数中的任何一个来更改项目数量?嗨,Rakesha,这是正确的。如果我创建一个FoodItem,即food1,然后使用aKitchen.addToList()它只调用FoodItem.append(food1)。但是如果我使用setter或useFood()更改itemQuantity,我需要更新[foodItem]列表。基本上,这是一个食物清单,当人们使用食物时应该更新。显然,如果我清除列表并重新添加对象,值的变化是可见的,但肯定有更简单的方法??谢谢我想我可以写一个upadateFoodItem(food1),找到它的索引,删除它并在同一个索引上重新追加,但那个索引将不再存在??有什么想法吗?
class Foo {
    var bar: String = "Some String" {
        didSet {
            print("did set value", bar)
        }
    }
}