NSInvalidArgumentException - 尝试插入nil对象

时间:2014-08-28 13:35:00

标签: ios objective-c nsdictionary

我不明白以下代码行中的问题。 我知道NSDictionary不允许插入nil对象,所以我在将对象插入NSDictionay之前检查nil,即使在出现崩溃之后也是如此。

-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response
{
    Request * logRequest =  [self.requestLogUtil newRequest];
            logRequest.requestParams = @{@"HTTP Method": ([request HTTPMethod] != nil ? [request HTTPMethod] : @""),
                                      @"HTTP Headers": ([request allHTTPHeaderFields] != nil ? [request allHTTPHeaderFields] : @""),
                                      @"Post Parameters": (request.HTTPBody != nil? [NSString stringWithUTF8String:[request.HTTPBody bytes]]: @""),
                                      @"Query Parameters": ([request.URL query] != nil ? [request.URL query] : @"")
                                      };
}

它因以下原因而崩溃,但不是每次都崩溃。

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从对象插入nil对象[2]'

1 个答案:

答案 0 :(得分:0)

感谢Adam Wright!

我明白了。这是因为你对此有所怀疑。

由于某种原因,stringWithUTF8String返回NULL。

*由于未捕获的异常终止应用' NSInvalidArgumentException',原因:' * + [NSString stringWithUTF8String:]:NULL cString'

我需要检查上面的方法是否为NULL。