HTTP POST 请求返回尝试从对象[0] 插入 nil 对象?



我正在尝试向服务器发送http请求,我需要在其中发送以下必需参数

描述:字符串,金额:浮点数,occurred_at:字符串,位置:字符串

由于我需要通过文本字段传递它的数量(其他字段通过 API 传入)已经成为一个 Segue 将 PreObject 对象传递给需要其数量的视图。

魔法记录用于对象

前置对象

( (实体:PreObject;id: 0xd000000000040006 ; 数据:{ 金额 = 零; 创建后端 = 1; 货币 = 零; 描述 = "; 费用 = 零; 额外信息 ="0xd000000001400010"; 标识符 = 47; 忽略在 = 零; 位置 = 无; 发生于 = "2017-03-12 00:00:00 +0000"; 参与者 = "; 付款人 = 无; 接收器 = 零; 状态 = 无; 标签 = "; }))

Http 请求申请:

class  func sendToBackend(object: PreObject,preObjectID: NSNumber, withCompletion completion: (error: NSError?) -> ()) {
let url = "(ServicesUtils.baseUrl())/objects/(preObjectID)/send"
let params = [object.dictionaryBackend()]
let sessionManager = ServicesUtils.rexpenseBaseSessionManager()
let request = sessionManager.requestSerializer.requestWithMethod("POST", URLString: url, parameters: params, error: nil)

let task = sessionManager.dataTaskWithRequest(request) { urlResponse, responseObject, error in
if let _ = error {
let returnError = ServicesUtils.rexpenseHandleErrorWithResponse(urlResponse, andRequest: request, andResult: responseObject)
completion(error: returnError)
return
}
guard let dict = responseObject as? [String: AnyObject] else {
let errorMessage = "Error"
let error = NSError(domain: "xxxxxxxxx", code: -1, userInfo: [NSLocalizedDescriptionKey : errorMessage])
completion(error: error)
return

}
let moc = NSManagedObjectContext.MR_defaultContext()
PreObject.createPreObjectwithDictionary(dict, inContext: moc)
moc.MR_saveToPersistentStoreAndWait()
completion(error: nil)
}
task.resume()
}

传入申请参数的字典:

- (NSMutableDictionary *)dictionaryBackend {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"description"] = description == nil ? [NSNull null] : description;
dict[@"payer"] = @{@"id": self.payer.identifier,
@"type": @"xxxxx"};
if ([self.amount doubleValue] == [self.amount intValue]) {
NSNumber *number = [NSNumber numberWithDouble:[self.amount doubleValue] + 0.001];
dict[@"amount"] = number;
} else {
dict[@"amount"] = self.amount;
}
NSDateFormatter *dateFormatter = [ServicesUtils defaultDateFormatter];
dict[@"occurred_at"] = [dateFormatter stringFromDate:self.occuredAt];
dict[@"tags"] = [self tagsSeparatedByComma];
dict[@"location"] = self.address == nil ? [NSNull null] : self.address;
dict[@"currency"] = self.currency;
return dict;

当我点击UIButton应用程序崩溃并在调试区域显示此错误时:

*

由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"*-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从 对象[0]'

有人可以帮助我吗?

此崩溃通常是由于尝试创建具有 nil 值的字典引起的。

行前检查:

dict[@"payer"] = @{@"id": self.payer.identifier,
@"type": @"xxxxx"};

如果 self.player.identifier 为 nil。

当它为零时,我无法建议您应该做什么,因为这在不同的应用程序中可能意味着不同的事情。

最新更新