Esta é uma pergunta complementar à minha pergunta anterior aqui :
Na resposta, o passo dos tiques é codificado, com base nos dados de exemplo que forneci:
AxisMarks(position: .bottom, values: .stride(by: 100)) {
AxisValueLabel(anchor: .top)
}
Mas os dados são variáveis e, às vezes, o passo precisa ser, por exemplo, apenas 10 ou qualquer outro número.
Então comecei com uma variável local:
var xStride = 100
, o que me deu o seguinte erro:
Não é possível converter o valor do tipo 'Int' para o tipo de argumento esperado 'Calendar.Component'
Então tentei converter a variável:
var xStride = Calendar.Component(100)
, e agora o erro é:
'Calendar.Component' não pode ser construído porque não possui inicializadores acessíveis
O que eu também não entendo é que meu gráfico é apenas um gráfico xy e não lida com dias, anos ou o que quer que seja.
Então, posso fazer isso e como?
Você poderia tentar declarar
e usá-lo em
Existe um passo específico , que usa um
BinaryFloatingPoint
. Funciona comDouble
também, mas nãoInt
.Quando você usa
.stride(by: xStride)
whenxStride
é umInt
, o Swift tenta automaticamente usar esta versão de passoCalendar.Component
com , já que a outra versão não aceita umInt
.Quando você declara,
@State private var xStride: Float = 100
o Swift usa a versão apropriada do stride comBinaryFloatingPoint
tipos. Da mesma forma, quando você usa,.stride(by: 100)
o Swift converte o100
para um Float ou Double automaticamente para você.