小编Nev*_*ani的帖子

没有科学计数法和四舍五入

我想将数字四舍五入,并且不希望使用科学计数法来显示它。我正在使用此代码将小数点后舍入到6位,但是如果该值确实很小,它仍会使用科学计数法显示它。我知道我可以使用数字格式化程序(也显示在下面)来删除科学计数法,但是如果这样做,它将返回一个字符串,因此我无法将字符串四舍五入到小数位数。如果我先进行四舍五入,那仍然不能在所有情况下都起作用。它仍然显示一些数字而不四舍五入。实现此目标的最佳方法是什么?它应该适用于数字无限长或重复的所有不同情况

extension Double {
    // Rounds the double to decimal places value
    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
       return (self * divisor).rounded() / divisor
    }
}




let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
numberFormatter.number(from:"")
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码

let currentValue = 1/2.3344 //answer is 0.42837559972584...
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
numberFormatter.maximumFractionDigits = 6
guard let finalNum = numberFormatter.number(from: String(describing: currentValue)) else {return nil}
text = String (describing: finalNum)
Run Code Online (Sandbox Code Playgroud)

我希望它显示0.428375。该值四舍五入到小数点后六位。

当前值为:let currentValue = 1/233442000000428371 ...我希望它显示0.000004。小数点后四舍五入到小数点后六位,并且没有科学计数法。 …

nsnumberformatter swift

1
推荐指数
1
解决办法
484
查看次数

使用codable将字符串转换为Date/Int/Double

我从API获得响应,但问题是API将值作为一串日期和双精度发回.因此我收到错误"预期解码Double但发现字符串/数据".我已经构建了这样的结构来解决问题,但这似乎是一个补丁.有没有更好的方法来解决这个问题?我觉得苹果已经想到了这一点,并包含一些原生的东西来解决这个问题.

struct SimpleOrder:Codable{ 
    var createdDate:Date! {
        return createdDateString.dateFromISO8601
    }
    var createdDateString:String

    var orderId:String!

    var priceVal:Double!
    var priceString:String{
        didSet {
            priceVal = Double(self.priceString)!
        }
    }

    private enum CodingKeys: String, CodingKey {
        //case createdDate
        case createdDateString = "time"

        case orderId = "id"

        case priceVal
        case priceString = "price"
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否相关,但这就是它的使用方式.我将数据作为字符串获取并将其转换为存储在dataFromString变量中的数据

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601 //This is irrelevant though because the date is returned as a string. 

do{
    let beer = try decoder.decode(SimpleOrder.self, from: dataFromString)
    print ("beer …
Run Code Online (Sandbox Code Playgroud)

json swift swift4 codable

1
推荐指数
1
解决办法
4075
查看次数

当应用程序进入后台时覆盖顶视图控制器

当应用程序进入后台时,我想在顶部视图控制器顶部的 xib 文件中放置一个模糊视图(以便可以对其进行自定义),以便用户在使用多任务处理时无法看到我的应用程序的内容。我该怎么做?我用根视图控制器尝试了很多东西,但没有用。我知道我需要使用这些委托方法,但我不确定如何获取顶视图控制器并在其上放置一个视图。我正在使用带有一堆导航控制器的标签栏控制器。

func applicationWillResignActive(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)

func applicationWillEnterForeground(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)

当应用程序再次打开时,我显然想摆脱那种模糊的视图,但我也想使用 Face/Touch ID 来提供访问权限。我认为使用 LocalAuthentication 非常简单。

ios swift

1
推荐指数
1
解决办法
1523
查看次数

在 Alamofire 中使用之前对 URL 进行编码

现在我正在使用参数发出 Alamofire 请求。在发出请求之前我需要最终 URL,因为我需要散列最终 URL 并将其添加到请求标头中。我就是这样做的,但它没有给我最终的 URL 来散列并放入标题中。

Alamofire.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON
Run Code Online (Sandbox Code Playgroud)

我想在发出此请求之前获取编码的 URL,因此请求如下所示

Alamofire.request(url, method: .get, headers: headers).responseJSON
Run Code Online (Sandbox Code Playgroud)

现在作为一种解决方法,我通过手动附加每个参数来手动创建 URL。有没有更好的方法来做到这一点?

let rexUrl = "https://www.google.com"
let requestPath = "/accounts"
let url = rexUrl + requestPath + "?apikey=\(apiKey)&market=USD&quantity=\(amount)&rate=\(price)&nonce=\(Date().timeIntervalSince1970)"
Run Code Online (Sandbox Code Playgroud)

swift swift4

0
推荐指数
1
解决办法
1913
查看次数

在应用程序运行时阻止 Mac 进入睡眠状态

我想阻止用户的 Macbook 在应用程序运行时自动休眠。我该怎么做?我见过这个

https://developer.apple.com/library/content/qa/qa1340/_index.html

和这个:

快速禁用 OS X 中的睡眠模式

和这个:

使用 Swift 禁用 OSX 的睡眠/屏幕保护程序

但是没有我可以放置的简单代码行或委托方法使这像在 iOS 中一样简单?我只想让整个应用程序正常工作并阻止计算机自动进入睡眠状态。如果有人手动将其放入睡眠状态,那么显然没问题。我不想阻止用户让计算机进入睡眠状态。但是只要我的应用程序正在运行,我就不希望计算机进入睡眠状态。就像您在看电影时一样,该应用程序不会进入睡眠状态。我怎么做?

我觉得这是我需要的代码,但是我是否只需在 viewdidload 中运行此函数就可以了?有那么简单吗?

var assertionID: IOPMAssertionID = 0
var success: IOReturn?

func disableScreenSleep(reason: String = "Unknown reason") -> Bool? {
    guard success != nil else { return nil }
    success = IOPMAssertionCreateWithName( kIOPMAssertionTypeNoDisplaySleep as CFString,
                                       IOPMAssertionLevel(kIOPMAssertionLevelOn),
                                       reason as CFString,
                                       &assertionID )
    return success == kIOReturnSuccess
}
Run Code Online (Sandbox Code Playgroud)

macos swift

-1
推荐指数
1
解决办法
1048
查看次数

标签 统计

swift ×5

swift4 ×2

codable ×1

ios ×1

json ×1

macos ×1

nsnumberformatter ×1