title: Missing return in a function - swift error in Model
body: <p>So I have self generated pie chart on the storyboard with various labels, sliders, buttons of Age, CurrentAsset, Income, etc. I'm building the model with struct and I keep getting errors for several methods that have "missing return in a function expected to return 'Double'" even though you can see that I have returns for currentAssetFactor, savingsFactor, bondFactor, toleranceFactor, outlookFactor. What am I doing wrong?</p>
  
  <pre><code>public struct AllocationModel
  {
    let maxAge = 95.0
    let currentAge: Double
  
    let minCurrentAsset = 100000.0
    let maxCurrentAsset = 500000.0
    let currentAsset: Double
  
    let minSavings = 5000.0
    let maxSavings = 20000.0
    let currentSavings: Double
  
    let maxIncomeRequired = 0.04
    let minIncomeRequired = 0.01
    let currentIncomeRequired: Double
  
    let tolerance: String
  
    let outlook: String
  
    // MARK: - Methods
  
    public var currentAssetFactor: Double {
      if currentAsset &gt; maxCurrentAsset {
        return 5.0
      } else if currentAsset &gt;= minCurrentAsset {
        return Double(currentAsset / minCurrentAsset)
      }
    }
  
    public var savingsFactor: Double {
      if currentSavings &gt;= maxSavings {
        return 4.0
      } else if currentSavings &gt;= minSavings {
        return Double(currentSavings / minSavings)
      }
    }
  
    public var bondFactor: Double {
      if currentIncomeRequired &gt;= maxIncomeRequired {
        return 0.2
      } else if currentIncomeRequired &gt;= minIncomeRequired {
        return (0.05 * Double(currentIncomeRequired / minIncomeRequired) )
      }
    }
  
    public var toleranceFactor: Double {
      switch tolerance {
        case "conservative": return 0.0
        case "balanced": return 3.0
        case "aggressive": return 6.0
      default: 0.0
      }
    }
  
    public var outlookFactor: Double {
      switch outlook {
        case "poor": return 0.0
        case "moderate": return 7.0
        case "strong": return 10.0
      default: return 0.0
      }
    }
  
  
    public var stock: Double {
      return maxAge - currentAge + currentAssetFactor + savingsFactor + toleranceFactor + outlookFactor
    }
  
    public var nonStock: Double { return 100.0 - stock }
  
    public var bondPercentage: Double { return 0.35 + bondFactor }
  
    public var bond: Double { return nonStock * bondPercentage }
  
    public var cash: Double { return nonStock - bond }
  
    // MARK: - Init
  
    public init(currentAge: Double, currentAsset: Double, currentSavings: Double, currentIncomeRequired: Double, tolerance: String, outlook: String) {
      assert(currentAge &gt; 0)
  
      self.currentAge = currentAge
      self.currentAsset = currentAsset
      self.currentSavings = currentSavings
      self.currentIncomeRequired = currentIncomeRequired
      self.tolerance = tolerance
      self.outlook = outlook
    }
  
  }
  </code></pre>