Expression was too complex to be solved in reasonable time Swift 3 Expression was too complex to be solved in reasonable time Swift 3 xcode xcode

Expression was too complex to be solved in reasonable time Swift 3


Unfortunately, you have to have to define your query as var and assign the values separately. It seems that Swift 3.0 cannot handle expressions this long.

Your code will look like this:

var query = [String: AnyObject]()query[String(kSecClass)] = kSecClassGenericPasswordquery[String(kSecAttrService)] =  keyTag as AnyObjectquery[String(kSecAttrAccount)] = keyTagquery[String(kSecReturnData)] = kCFBooleanTruequery[String(kSecMatchLimit)] = kSecMatchLimitOnequery[String(kSecUseOperationPrompt)] = message


Try casting all dictionary values to AnyObject. Unless they are already objects derived from NSObject (such as NSString, NSNumber, NSArray and NSDictionary), you need to cast them to AnyObject. Swift 3 has removed the automatic bridging to Foundation types.

let query: [String: AnyObject] = [String(kSecClass) : kSecClassGenericPassword as AnyObject,                                   String(kSecAttrService) : keyTag as AnyObject,                                   String(kSecAttrAccount) : keyTag as AnyObject,                                   String(kSecReturnData) : kCFBooleanTrue as AnyObject,                                   String(kSecMatchLimit) : kSecMatchLimitOne as AnyObject,                                   String(kSecUseOperationPrompt) : message as AnyObject]