title: Cannot invoke 'init' with argument list of type StringLiteralConvertible
body: <p>when I try to run the code below I get this error:</p>
  
  <pre><code>Cannot invoke 'init' with argument list of type (id:StringLiteralConvertible,host:Contact,target:Contact,text:StringLiteralConvertible)
  </code></pre>
  
  <p>I tried using NSString and String in my class but still having the same problem. Can anyone guide me what i'm missing here?</p>
  
  <pre><code>class Contact {
      let id:String? = ""
      let name:String? = ""
      var number:String? = ""
      var photoPath:String? = ""
      var onlineStatus:Bool? = false
  
      init(id:String,name:String) {
          self.id = id
          self.name = name
          self.number = ""
          self.photoPath = ""
          self.onlineStatus? = false
      }
  }
  
  class Message {
      var id:String?
      var time:NSDate?
      var host:Contact?
      var target:Contact?
  
      init(id:String,host:Contact,target:Contact,time:NSDate) {
          self.id = id
          self.host = host
          self.target = target
          self.time = time
      }
  }
  
  class TextMessage:Message {
      var text:String?
  
      init(id: String, host: Contact, target: Contact, time: NSDate, text: String) {
          super.init(id: id, host: host, target: target, time: time)
          self.text = text
      }
  }
  
  let host = Contact(id: "", name: "")
  let target = Contact(id: "", name: "")
  let msg = TextMessage(id: "", host: host, target: target, time: NSData(), text: "")
  </code></pre>