title: How to get all enum values as an array
body: <p>I have the following enum.</p>
  
  <pre><code>enum EstimateItemStatus: Printable {
      case Pending
      case OnHold
      case Done
  
      var description: String {
          switch self {
          case .Pending: return "Pending"
          case .OnHold: return "On Hold"
          case .Done: return "Done"
          }
      }
  
      init?(id : Int) {
          switch id {
          case 1:
              self = .Pending
          case 2:
              self = .OnHold
          case 3:
              self = .Done
          default:
              return nil
          }
      }
  }
  </code></pre>
  
  <p>I need to get all the raw values as an array of strings (like so <code>["Pending", "On Hold", "Done"]</code>).</p>
  
  <p>I added this method to the enum.</p>
  
  <pre><code>func toArray() -&gt; [String] {
      var n = 1
      return Array(
          GeneratorOf&lt;EstimateItemStatus&gt; {
              return EstimateItemStatus(id: n++)!.description
          }
      )
  }
  </code></pre>
  
  <p>But I'm getting the following error.</p>
  
  <blockquote>
    <p>Cannot find an initializer for type 'GeneratorOf' that accepts an argument list of type '(() -> _)'</p>
  </blockquote>
  
  <p>Is there is an easier, better or more elegant way to do this?</p>