- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的函数用于在千克和磅之间进行转换。由于某些未知原因,converted(to:)
方法似乎要么返回 0(我认为这不太可能),要么将返回值分配给 liftWeight
不工作。
func convertUnit(liftEvent: LiftEventRepresentable ) -> LiftEventRepresentable {
let unit = liftEvent.liftWeight.unit.symbol
switch unit {
case "kg":
let weight = liftEvent.liftWeight
print("Event weight is \(weight)") // 110.0 kg
let liftWeight = weight.converted(to: .pounds) // this is returning 0 or the assignment isn't working
print("The new weight is \(liftWeight)") 0.0 lb
liftEvent.updateWeightLifted(liftWeight.value)
liftEvent.updateWeightUnit(liftEvent.liftWeight.unit.symbol)
return liftEvent
case "lb":
// I'll finish this case after I get case "kg": working
default:
fatalError("Oops, this should not happen")
}
}
我认为这可能与我过去遇到的问题类似,该问题涉及尝试将 Measurement
分配给可选值,但我在此方法中没有任何可选值,所以我假设我一定是做错了什么。
提升事件:
extension LiftEvent {
@NSManaged var date: Date
@NSManaged var repetitions: NSNumber
@NSManaged var uid: NSNumber?
@NSManaged var weightLifted: NSNumber
@NSManaged var weightUnit: String
@NSManaged var formula: Formula
@NSManaged var lift: Lift
}
LiftEventRepresentable 协议(protocol)是:
@objc protocol LiftEventRepresentable {
var date: Date { get }
var formula: Formula { get }
var repetitions: NSNumber { get set }
var liftWeight: Measurement<UnitMass> { get }
var maxWeight: Double { get }
var lift: Lift { get }
var context: NSManagedObjectContext { get }
var userDidChangeUnits: Bool { get set }
func updateWeightLifted(_ weight: Double)
func updateRepetitions(_ repetitions: Int)
func updateMaxAmount(_ maxAmount: Measurement<UnitMass>) -> ()
func updateLiftEventFormula(_ newFormulaUuid: String) -> ()
func updateLift(_ newLiftUuid: String) -> ()
func updateWeightUnit(_ newUnit: String)
func calculateOneRepMax() -> Measurement<UnitMass>
func updateLiftEventWithFinalValues()
}
谁能告诉我为什么转换后 liftEvent.liftWeight
是 0.0 lb?
编辑 1:这就是 liftEvent.liftWeight
的生成方式(我原本应该将其包含在我的问题中)。这是一个计算属性,我现在了解到它是导致转换始终返回 0 的原因):
class LiftEvent: NSManagedObject, LiftEventRepresentable {
var liftWeight: Measurement<UnitMass> {
let defaultUnit = UserDefaults.weightUnit() // returns a string ("kg" or "lb")
let unitSymbol = UnitMass.init(symbol: defaultUnit) // the wrong way
let liftWeight = Measurement<UnitMass>(value: Double(weightLifted), unit: unitSymbol)
return liftWeight
}
编辑 2:根本问题确实是 liftEvent.liftWeight 无效。
这是我现在可以使用的新代码:
var liftWeight: Measurement<UnitMass> {
let defaultUnit = UserDefaults.weightUnit() // returns a string ("kg" or "lb")
let unit: UnitMass
if defaultUnit == "kg" {
unit = UnitMass.kilograms // the right way
} else {
unit = UnitMass.pounds // also the right way
}
let liftWeight = Measurement<UnitMass>(value: Double(weightLifted), unit: unit)
return liftWeight
}
最佳答案
您的Measurement
单位有问题。它是一个 UnitMass
,因此它具有正确的维度,但它的转换器丢失了。这可能是因为您使用 UnitMass(symbol: "kg")
而不是 UnitMass.kilograms
创建它。
// right way
let goodUnit = UnitMass.kilograms
let goodWeight:Measurement = Measurement(value: 110.0, unit: goodUnit)
print("Good pounds: ", goodWeight.converted(to: .pounds)) // 242.508686220216 lb
// wrong way (results in 0.0 output)
let badUnit = UnitMass(symbol: "kg")
let badWeight:Measurement = Measurement(value: 110.0, unit: badUnit)
print("Bad pounds: ", badWeight.converted(to: .pounds)) // 0.0 lb
用 UnitMass(symbol: "kg")
创建一个单位实际上是有效的代码,所以没有错误。您可以使用此语法使用您想要的任何符号和自定义转换器创建您自己的质量单位。出于某种原因,converter:
参数是可选的,因此 UnitMass(symbol: "kg")
只是使用符号 "kg"和默认的 创建一个新的质量单位>UnitLinearConverter
系数为 0。
改为使用 UnitMass.kilograms
为您提供一个预定义的千克单位,该单位已经设置了正确的符号和转换器。很容易犯错误,特别是因为没有错误。
我建议您查看创建 liftEvent.liftWeight
的位置,因为这很可能是问题所在。
关于swift - 为什么我的 kg/lb 转换返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394706/
我正在使用来自“http://lokeshdhakar.com/projects/lightbox2/”的 lightbox2。我的一切都按预期工作,但我想添加“编辑”功能,这样我就可以打开一个页面,
设置看起来像这样: 服务客户端--httpS-->负载均衡器--http-->托管WCF的IIS 我收到此错误: 由于 EndpointDispatcher 上的 AddressFilter 不匹配,
我即将进行考试,练习题之一是: Assume that $t0 contains the value 0x12121212 and $t1 contains the address 0x1000000
我的马拉松 json 在下面 { "id": "/storage/mysql", "cmd": null, "cpus": 1, "mem": 512, "disk": 0,
服务对象的 kubernetes 官方文档有一些关于连接耗尽、超时、附加标签等的注释,但这些仅限于 AWS。 我希望在 Azure 云上的 K8S 部署中找到同样的结果。 例如, annotatio
我的负载均衡器后端池中有两个虚拟机。我已将运行状况探测设置为探测端口 80。两个虚拟机上的网络安全组都允许来自任何来源和任何协议(protocol)的 80。我还为两台虚拟机的 SSH 设置了 NAT
我只想有一个数组来计算所有数字的总和。我不确定如何将每个位置存储到一个变量中,所以我尝试了 lb $t5, ($s1) 并且它起作用了,但是当我将它更改为 lw $t5, ( $s1) 它再次工作。我
如果我做对了,lb_listener 只接受转发作为有效的操作类型。 https://www.terraform.io/docs/providers/aws/r/lb_listener.html 如何
我正在尝试从保存在数据中的单词中加载一个字节: .data number: .word w1 .text 的一部分: stringlength: li $t2, 10
我需要在服务器缓存中保留一些数据。服务器在集群中,调用可以转到其中任何一个。在这种情况下,最好使用像 EhCache 这样的复制/分布式缓存还是使用 LB 的 session 粘性。 如果数据大小(在
例如,当前的配置规范是“element */main/LATEST”。有一个文件“A.txt”,它的当前版本是3,并且之前在它的版本2上应用了一个名为“LB”的标签。 我想要一个命令来查询当前版本上没
我已经设置了一个带有后端池的LB(只有一台主机用于测试)。我使用以下规则在测试主机上设置网络安全组: Source: AzureLoadBalancer Destination: Any Action
是否可以使用 API 管理或负载均衡器将 Azure 混合连接公开到公共(public)网络中? 最佳答案 您可以拥有一个支持azure hybrid connection的Web应用程序,到达您的本
我是 GKE 和 K8S 的新手,所以请坦白我和我的愚蠢。我目前有一个 GKE 集群,它在默认节点池中有两个节点,并且集群通过 LoadBalancer 类型的服务公开。 这些节点的任务是通过 HTT
我想在私有(private) VM 上托管的单节点 K8s 集群(污点节点 --all)上设置 Istio 入口网关,以用于开发目的。由于我没有负载均衡器,因此 istio-ingressgatewa
我的函数用于在千克和磅之间进行转换。由于某些未知原因,converted(to:) 方法似乎要么返回 0(我认为这不太可能),要么将返回值分配给 liftWeight不工作。 func convert
我正在尝试在 Ubuntu 16.04 上编译 linux 内核 3.4.0,但出现错误: In file included from kernel/fork.c:79:0: include/trac
我是 K8s 的新手,这是我第一次尝试掌握它。我正在尝试使用此 deployment.yml 设置基本的 Nodejs Express API: apiVersion: extensions/v1be
我遵循了 this 上的第一个答案在 StackOverflow 上发帖,但我收到此错误: Failure configuring LB attributes: InvalidConfiguratio
我正在尝试连接客户端服务器和其余 api 服务器。我在前端使用 Angular JS,在后端使用环回。 在 lb-services.js 上,我将基本 url 更改为: var urlBase =
我是一名优秀的程序员,十分优秀!