What does force unwrapped mean in an expected argument type? <p>Here is my line of code in Swift, it calls a method:</p> <pre><code>networkManager.postUserProfile(self, onSuccess: {(username: String, userID: NSNumber, recommendedLessons: [AnyObject]) -&gt; Void in ... code block }, onFailure: {(error: NSError) -&gt; Void in ... another code block }) </code></pre> <p>The <code>networkManager</code> class is from Objective-C and is:</p> <pre><code>- (void)postUserProfile:(Profile *)profile onSuccess:(void(^)(NSString *username, NSNumber *userID, NSArray *recommendedLessons))successBlock onFailure:(void(^)(NSError *error))failureBlock; </code></pre> <p>And the error message is:</p> <blockquote> <p>error: cannot convert value of type <code>(String, NSNumber, [AnyObject]) -&gt; Void</code> to expected argument type <code>((String!, NSNumber!, [AnyObject]!) -&gt; Void)!</code></p> </blockquote> <p>When calling a method, I understand that the <code>!</code> operator will force-unwrap an optional. However in this situation, what is the meaning of the <code>!</code> in the expected argument type?</p>