gpt4 book ai didi

ios - 'CLLocationCoordinate2D' 与协议(protocol) 'decodable' 的冗余一致性/'encodable'

转载 作者:行者123 更新时间:2023-11-28 11:42:36 24 4
gpt4 key购买 nike

我正在编写一个使用 CoreLocation 的内部使用框架。不要问我为什么,但我有要求使 CLLocation 可编码。所以我想出了一个结构

struct CLLocationEncodingStruct: Codable {
let coordinate: CLLocationCoordinate2D
let altitude: CLLocationDistance
let horizontalAccuracy: CLLocationAccuracy
let verticalAccuracy: CLLocationAccuracy
let speed: CLLocationSpeed
let course: CLLocationDirection
let timestamp: Date

public init(with location: CLLocation) {
coordinate = location.coordinate
altitude = location.altitude
horizontalAccuracy = location.horizontalAccuracy
verticalAccuracy = location.verticalAccuracy
speed = location.speed
course = location.course
timestamp = location.timestamp
}

var location: CLLocation {
return CLLocation(coordinate: coordinate, altitude: altitude, horizontalAccuracy: horizontalAccuracy, verticalAccuracy: verticalAccuracy, course: course, speed: speed, timestamp: timestamp)
}
}

然后我在 CLLocation 的扩展中符合 Codable。将数据放入该结构或从中提取数据。为了完成这项工作,我还必须使 CLLocationCoordinate2D 符合 Codable。我通过编写以下非常复杂的扩展来做到这一点

extenstion CLLocationCoordinate2D: Codable {}

现在我想做一些正确的事情来改变,所以我想开始编写单元测试。问题是我对 CLLocationCoordinate2D 的扩展需要成为两个目标的一部分:单元测试和框架本身。不幸的是,这无法编译。它失败了

Redundant conformance of 'CLLocationCoordinate2D' to protocol 'Encodable'

“CLLocationCoordinate2D”与协议(protocol)“Decodable”的冗余一致性

指出 CLLocationCoordinate2D 已经符契约(Contract)一代码行的协议(protocol)。不过,构建依赖于所述框架的目标非常有效。您有解决此问题的想法吗?

最好的,

格鲁

最佳答案

您的扩展不需要成为测试目标的一部分。

您使用@testable 属性将您的主要应用程序目标导入单元测试

import XCTest

@testable import MyProject

class MyProjectViewControllerTests: XCTestCase {}

这允许您使用项目中的类、扩展等,而无需将它们添加到测试目标。

关于ios - 'CLLocationCoordinate2D' 与协议(protocol) 'decodable' 的冗余一致性/'encodable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53340645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com