草庐IT

swift - 使 NSDecimalNumber 可编码

coder 2023-07-17 原文

是否可以扩展 NSDecimalNumber 以符合 Encodable 和 Decodable 协议(protocol)?

最佳答案

不可能扩展 NSDecimalNumber 以符合 EncodableDecodable 协议(protocol)。 Jordan Rose 在下面解释了它 swift evolution email thread .

如果您需要在 API 中输入 NSDecimalValue,您可以围绕 Decimal 构建计算属性。

struct YourType: Codable {
    var decimalNumber: NSDecimalNumber {
        get { return NSDecimalNumber(decimal: decimalValue) }
        set { decimalValue = newValue.decimalValue }
    }
    private var decimalValue: Decimal
}

顺便说一句。如果您使用 NSNumberFormatter 进行解析,请注意 known bug这在某些情况下会导致精度损失。

let f = NumberFormatter()
f.generatesDecimalNumbers = true
f.locale = Locale(identifier: "en_US_POSIX")
let z = f.number(from: "8.3")!
// z.decimalValue._exponent is not -1
// z.decimalValue._mantissa is not (83, 0, 0, 0, 0, 0, 0, 0)

改为以这种方式解析字符串:

NSDecimalNumber(string: "8.3", locale: Locale(identifier: "en_US_POSIX"))

关于swift - 使 NSDecimalNumber 可编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294765/

有关swift - 使 NSDecimalNumber 可编码的更多相关文章

  1. javascript - 如何使用 Javascript(在可编辑的 div 中)在新添加的空范围内设置光标? - 2

    我有一个contenteditablediv,它有格式选项。我希望能够单击,说粗体按钮,然后插入和分别在我光标的左侧和右侧。我相信我已经做到了。但是,我不知道如何将光标放在范围内,以便用户可以开始输入粗体文本。我目前正在使用的功能:functionbold(text,clearSelection){text=text.replace(/\r\n/g,"");varsel,range,html;vartn=false;//Hereiamaddingthespanelementif(window.getSelection){sel=window.getSelection();if(sel.

  2. javascript - 在光标位置的可编辑 div 中插入几个元素 - 2

    我有一个带有contenteditable属性的div。用户需要能够在光标所在的位置键入和插入多个选择菜单。我已经设法获取光标位置并插入第一个选择菜单,但它只适用于第一个文本节点。这就是我获取光标位置的方式:functiongetCaretCharacterOffsetWithin(element){varcaretOffset=0;vardoc=element.ownerDocument||element.document;varwin=doc.defaultView||doc.parentWindow;varsel;if(typeofwin.getSelection!="undef

  3. javascript - 在内容可编辑的 div 中加粗特定文本 - 2

    我在我的contenteditablediv中有这个。每当我输入#something,然后输入空格时,我想立即在该div中将该词加粗。例如这是我的信息。#哈哈。我想加粗主题标签。下面是我的代码$('#message').keyup(function(e){varlen=$(this).val().length;if($(this).val().substring(length-1,1)=='#'){}//detectspaceif(e.keyCode==32){}});我正在使用jquery。我该怎么做? 最佳答案 使用conten

  4. asp.net - 在 ASP.NET 中实现可编辑的 DropDownList - 2

    在ASP.NET中实现无需使用第3方组件即可编辑的DropDownList的最优雅方法是什么。作为最后的手段,我可​​能会尝试使用带有图像的TextBox和AutoCompleteExtender来“下拉”列表;或TextBox与HTMLSelect重叠并使用一些JavaScript将值从Select填充到TextBox。但我真的希望有一个更简洁和可维护的解决方案。提前致谢。 最佳答案 一个页面上的一个控件可以关注thissimpleexampleforanEditableDropDownlistonCodeProject它使用标准

  5. javascript - 双击可编辑 - 2

    我有一个带有一些文本的p标签,我试图让它成为contenteditable但仅限于双击。我怎样才能防止浏览器在我点击它时将光标放在p上并且只在我双击时才这样做?查询:p.dblclick(function(e){p.css("cursor","text");}).focusout(function(){p.css("cursor","default");}).click(function(e){console.log('focusp');e.stopPropagation();$("body").focus();//notstoppingChromefromplacingcursor}

  6. javascript - 如何获取包含图像的内容可编辑的 div 的插入符号位置 - 2

    我有这个contentedittabledivminubyviubyvt这是代码输出的图像描述所以我想获取div的插入符号位置,并假设光标位于最后一个字符之后。这是我获取插入符位置的代码functiongetCaretPosition(editableDiv){varcaretPos=0,sel,range;if(window.getSelection){sel=window.getSelection();if(sel.rangeCount){range=sel.getRangeAt(0);if(range.commonAncestorContainer.parentNode==edi

  7. javascript - 挖空内容可编辑自定义绑定(bind) - 2

    为什么在这个例子中http://jsfiddle.net/JksKx/8/当我写文本时div丢失光标?如何解决此类行为? 最佳答案 keyup事件正在触发并写入您的View模型,然后触发自定义绑定(bind)的更新功能。这是将innerHTML写回元素,这会导致您失去焦点。如果element.innerHTML已经与您要设置的值相同,一个简单的解决方法是检查更新函数。http://jsfiddle.net/rniemeyer/JksKx/9/ko.bindingHandlers.htmlValue={init:function(el

  8. javascript - 在 Meteor 中使用 AutoForm 可编辑表格 - 2

    如何在Meteor中创建一个包含输入字段的表格。我使用了http://autoform.meteor.com/update-each中的示例但他们只使用1个输入字段。此功能适用于此代码:{{#eachpersons}}{{#autoFormid=makeUniqueIDtype="update"collection=Collections.Personsdoc=thisautosave=true}}{{>afFieldInputname="fullName"label=false}}{{>afFieldInputname="email"label=false}}{{>afFieldIn

  9. javascript - 如何为可编辑日期设置正确的日期格式 - 2

    我从postgres获取一些日期文件,格式如下:"2000-11-30T14:00:00.000Z"我不能在页面上的可编辑日期字段中使用它。像这样的东西:{{employee.brthday||'empty'|date:"dd/MM/yyyy"}}这个日期(如上)显示正常。但是当我想编辑这个字段时,日期将重置并且我在控制台中收到了这条消息:Error:[ngModel:datefmt]Expected`2000-12-05T14:00:00.000Z`tobeadatehttp://errors.angularjs.org/1.3.0/ngModel/datefmt?p0=2000-1

  10. javascript - 使用 REST API 的可编辑 jQuery 网格推荐 - 2

    首先,我已经阅读了问题“jQueryGridRecommendations”,但它没有回答我的问题。我有一个小RESTAPIwithMongoDBBackend只是:获取所有装备:GET/equipementsHTTP/1.1{{_id:key1,name:TestDocument1,plateforme:prod},{_id:key2,name:TestDocument2,plateforme:prod},...}使用key获取设备:key1GET/equipements/key1HTTP/1.1{"_id":"key1","name":"TestDocument1","platef

随机推荐