ios - 找不到错误“模型的概述发布”的根本原因
问题描述
我有一个持续的崩溃,我找不到解决方案。在我的应用程序的一个模式视图中,用户可以创建几张卡片,当用户“完成”时,我收集创建的卡片并一张一张地发布它们(模式视图将被关闭)。我在下面有一个 Alamofire/Combine POST 调用,它将信息保存在用户创建的一张卡上。当我尝试发布数据时,我EXC_BAD_ACCESS
在代码中的注释行上得到一个。
我有许多其他正常工作的 GET 和 POST 调用具有非常相似的方法主体,这是我所知道的唯一一种引发错误的方法。
class APIHandler {
...
func postAdditionalCard(data: String) throws -> AnyPublisher<Card_AdditionalPostResponse, Error> {
let postCardAdditionalReq = Card_AdditionalPostRequest(data: data)
let paramData = try JSONEncoder().encode(postCardAdditionalReq)
let params = try JSONSerialization.jsonObject(with: paramData, options: [])
return try networking.authorizationHeader() //Helper that fetches, either locally or remotely,
// the Authorization token and creates a authorization header with it
.flatMap { authHeader -> AnyPublisher<Card_AdditionalPostResponse, Error> in
self.networking.decodablePublisher(URL.cardAdditional, method: .post, parameters: params as? [String: Any], headers: [authHeader])
.mapError { _ in LANet.LANetError.genericError }
.eraseToAnyPublisher()
}
.eraseToAnyPublisher() //stack trace highlights this line with "EXC_BAD_ACCESS"
}
...
}
Card_AdditionalPostRequest
结构_
public struct Card_AdditionalPostRequest: Codable {
let ucc_id: Int?
let ucc_user_id: String
let ucc_created_time: String?
let ucc_description: String?
let ucc_type: String
public init(createdCard: Common_UserCard, task: Common_Task) {
self.ucc_id = createdCard.ucc_id?.intValue
self.ucc_user_id = createdCard.ucc_user_id ?? ""
self.ucc_created_time = createdCard.ucc_created_time?.yyyy_MM_dd_HH_mm_SecString
self.ucc_description = createdCard.ucc_description
self.ucc_type = createdCard.ucc_type ?? ""
}
}
调试导航器中显示的异常
#0 swift_release
#1 0x0000000103306c5f in outlined release of Card_AdditionalPostRequest ()
...
笔记 :
networking
是 Alamofire 的简单包装器。- APIHandler 类与视图的生命周期无关,而是与整个应用程序(即在应用程序启动时创建)相关联。
Card_AdditionalPostResponse
就像任何其他模型一样。符合Codable
并在其中包含一些数据的结构。- 该
parameters
变量是可选的,如果我parameters: params as? [String: Any],
从网络调用中删除,EXC_BAD_ACCESS
异常就会消失,但额外的数据不会附加到调用中。
解决方案
推荐阅读
- javascript - 如何使用 cloudflare worker 渲染 html 页面
- asp.net - 即使用户具有角色,服务器也总是返回 403 禁止
- ios - 如何在多故事板应用程序中使用 segues 保存数据?
- spring - 向@GetMapping 添加编码
- opencv - 如何在 python 中改进 Opencv 的边界框
- android-studio - 颤振项目中的红色下划线 build.gradle
- elasticsearch - 如何在elasticsearch中同时搜索嵌套字段中单个对象的两个字段
- reactjs - 用状态反应 forwordRef
- java - net::ERR_INVALID_CHUNKED_ENCODING 200 与基于 Chromium 的浏览器
- html - 我应该让网页响应到哪个设备宽度大小?