Tôi đang di chuyển dự án từ Swift 2.2 đến Swift 3 và tôi đang cố gắng loại bỏ các loại dữ liệu Cocoa cũ khi có thể.Chuyển đổi từ thập phân sang hai lần trong Swift 3
Sự cố của tôi ở đây: di chuyển NSDecimalNumber
đến Decimal
.
Tôi từng cầu NSDecimalNumber
-Double
cả hai cách trong Swift 2.2:
let double = 3.14
let decimalNumber = NSDecimalNumber(value: double)
let doubleFromDecimal = decimalNumber.doubleValue
Bây giờ, chuyển sang Swift 3:
let double = 3.14
let decimal = Decimal(double)
let doubleFromDecimal = ???
decimal.doubleValue
không tồn tại, cũng không Double(decimal)
, thậm chí không decimal as Double
... Chỉ hack mà tôi nghĩ ra là:
let doubleFromDecimal = (decimal as NSDecimalNumber).doubleValue
Nhưng đó sẽ là hoàn toàn ngu ngốc để cố gắng thoát khỏi NSDecimalNumber
, và phải sử dụng nó một lần trong một thời gian ...
Vâng, hoặc là tôi đã bỏ lỡ một cái gì đó rõ ràng, và tôi xin lỗi vì lãng phí thời gian của bạn, hoặc có một lỗ hổng cần được giải quyết, theo ý kiến của tôi ...
Cảm ơn trước sự giúp đỡ của bạn.
Chỉnh sửa: Không có gì thêm về chủ đề trên Swift 4.
Thực ra, 'Thập phân' tương ứng với' NSDecimalNumber': 'Lớp phủ Swift vào khung nền tảng cung cấp cấu trúc thập phân, kết nối với lớp NSDecimalNumber. Loại giá trị thập phân cung cấp chức năng tương tự như loại tham chiếu NSDecimalNumber và hai có thể được sử dụng thay thế cho nhau trong mã Swift tương tác với các API mục tiêu-C https://developer.apple.com/reference/foundation/nsdecimalnumber – Alexander
@AlexanderMomchliov , ngoại trừ nó không có phương thức 'NSDecimalNumber' nào có sẵn, do đó, để sử dụng chúng, bạn vẫn cần phải đúc' Decimal' thành 'NSDecimalNumber'. Nguồn: chỉ cần kiểm tra nó trong sân chơi. – user28434
Vâng, tôi đã không yêu cầu. Tôi chỉ nói rằng giả định của bạn rằng 'thập phân' tương ứng với' NSDecimal', là sai. – Alexander