title: Getting Optional("") when trying to get value from KeyChain
body: <p>When I try to get my keyChain value,  it return a string containing: </p>
  
  <pre><code>Optional("[thing in the KeyChain]")
  </code></pre>
  
  <p>so, I tried to remove "Optional" by using a loop:</p>
  
  <pre><code>var str = KeychainService.loadToken()
  
  for(var i = 0; i &lt; 9 ; i++)
  {
      str[i] = ""
  }
  </code></pre>
  
  <p>But i get a error: NSString does not have a member named 'subscript'</p>
  
  <p>The KeychainService class:</p>
  
  <pre><code>import Foundation
  import Security
  
  let serviceIdentifier = "MySerivice"
  let userAccount = "authenticatedUser"
  let accessGroup = "MySerivice"
  
  // Arguments for the keychain queries
  let kSecClassValue = kSecClass.takeRetainedValue() as NSString
  let kSecAttrAccountValue = kSecAttrAccount.takeRetainedValue() as NSString
  let kSecValueDataValue = kSecValueData.takeRetainedValue() as NSString
  let kSecClassGenericPasswordValue = kSecClassGenericPassword.takeRetainedValue() as NSString
  let kSecAttrServiceValue = kSecAttrService.takeRetainedValue() as NSString
  let kSecMatchLimitValue = kSecMatchLimit.takeRetainedValue() as NSString
  let kSecReturnDataValue = kSecReturnData.takeRetainedValue() as NSString
  let kSecMatchLimitOneValue = kSecMatchLimitOne.takeRetainedValue() as NSString
  
  class KeychainService: NSObject {
  
  /**
  * Exposed methods to perform queries.
  * Note: feel free to play around with the arguments
  * for these if you want to be able to customise the
  * service identifier, user accounts, access groups, etc.
  */
  internal class func saveToken(token: NSString) {
      self.save(serviceIdentifier, data: token)
  }
  
  internal class func loadToken() -&gt; NSString? {
      var token = self.load(serviceIdentifier)
  
      return token
  }
  
  /**
  * Internal methods for querying the keychain.
  */
  private class func save(service: NSString, data: NSString) {
      var dataFromString: NSData = data.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
  
      // Instantiate a new default keychain query
      var keychainQuery: NSMutableDictionary = NSMutableDictionary(objects: [kSecClassGenericPasswordValue, service, userAccount, dataFromString], forKeys: [kSecClassValue, kSecAttrServiceValue, kSecAttrAccountValue, kSecValueDataValue])
  
      // Delete any existing items
      SecItemDelete(keychainQuery as CFDictionaryRef)
  
      // Add the new keychain item
      var status: OSStatus = SecItemAdd(keychainQuery as CFDictionaryRef, nil)
  }
  
  private class func load(service: NSString) -&gt; String? {
      // Instantiate a new default keychain query
      // Tell the query to return a result
      // Limit our results to one item
      var keychainQuery: NSMutableDictionary = NSMutableDictionary(objects: [kSecClassGenericPasswordValue, service, userAccount, kCFBooleanTrue, kSecMatchLimitOneValue], forKeys: [kSecClassValue, kSecAttrServiceValue, kSecAttrAccountValue, kSecReturnDataValue, kSecMatchLimitValue])
  
      var dataTypeRef :Unmanaged&lt;AnyObject&gt;?
  
      // Search for the keychain items
      let status: OSStatus = SecItemCopyMatching(keychainQuery, &amp;dataTypeRef)
  
      let opaque = dataTypeRef?.toOpaque()
  
      var contentsOfKeychain: String?
  
      if let op = opaque? {
          let retrievedData = Unmanaged&lt;NSData&gt;.fromOpaque(op).takeUnretainedValue()
  
          // Convert the data retrieved from the keychain into a string
          contentsOfKeychain = NSString(data: retrievedData, encoding: NSUTF8StringEncoding)
      } else {
          println("Nothing was retrieved from the keychain. Status code \(status)")
      }
  
      return contentsOfKeychain
      }
  }
  </code></pre>
  
  <p>I just wan't to remove the Optional thing around the str
  Or is there a better way to do that?</p>
  
  <p>I have take this code from:</p>
  
  <p><a href="http://matthewpalmer.net/blog/2014/06/21/example-ios-keychain-swift-save-query/">http://matthewpalmer.net/blog/2014/06/21/example-ios-keychain-swift-save-query/</a></p>