Вы спрашиваете:
Как получить целочисленные значения в NSPoint
для отображения в виде целого числа, а не десятичного числа.
Этот вопрос может основываться на ложной предпосылке. Параметры, которые вы предоставляете для NSMakePoint(_:_:)
, на самом деле CGFloat
(как и базовые свойства x
и y
). Поэтому, хотя вы указали целые числа, Swift сохраняет их как CGFloat
для x
и y
, независимо от того.
Итак, вопрос в том, «Как вы отображаете CGFloat
свойства NSPoint
без дробных цифр?»
Конечно, как и предполагали другие, вы можете создать целое число из CGFloat
свойств с помощью Int(point.x)
и т. Д., Но я могу предположить, что вы действительно хотите просто отобразить эти CGFloat
без десятичных знаков. Есть несколько способов сделать это.
Рассмотрим:
let point = NSPoint(x: 5000, y: 7000)
Вы также можете использовать NSMakePoint
, но в Swift это немного более естественно.
Затем, чтобы отобразить это без десятичных разрядов, у вас есть несколько вариантов:
В macOS NSStringFromPoint
сгенерирует полное значение CGPoint
без десятичных знаков:
print(NSStringFromPoint(point)) // "{5000, 7000}"
Вы можете использовать String(format:_:)
, используя строку формата, которая явно не задает десятичных знаков:
print(String(format: "%.0f", point.x)) // "5000"
Вы можете использовать NumberFormatter
и указать minimumFractionDigits
:
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.numberStyle = .decimal
print(formatter.string(for: point.x)!) // "5,000"
Нет необходимости говорить, что вы можете сохранить этот форматер и использовать его повторно, по мере необходимости, если вы хотите, чтобы ваш код не становился слишком многословным.
Если вы просто регистрируете это на консоли, вы можете использовать Unified Logging с import os.log
и затем сделать:
os_log("%.0f", point.x) // "5000"