value is an NSNumber, not an NSString. You can use stringValue

if let a = d["a"] as? NSNumber {
    let aString = a.stringValue
    println(aString) // -1
}

,

let a = d["a"]! as! NSNumber
let aString = "\(a)"