18167


クリアまでのタイムを競うゲームでタイムを小数点２桁で表示しているのですが、そのタイムをNSUserDefaultsで保存して結果画面で表示させるまではできました。しかし、保存したタイムをツイートしようとしたら小数点の桁数が正確に出てしまい困っています。

[code]

    let str = "".stringByAppendingFormat("%.2f",cnt)
    time1.text = str
    
[/code]

このコードで小数点を２桁にしていて

[code]

    func onPostToTwitter1(sender : AnyObject) {
    
        let ud1 = NSUserDefaults.standardUserDefaults()
        let cnt = ud1.floatForKey("time")　//cntは少数で表示したいタイムです。
    
        myComposeView1 = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
    
    
        myComposeView1.setInitialText(" ただいまのタイムは \(cnt)秒です。 " )
    
        self.presentViewController(myComposeView1, animated: true, completion: nil)
    }
    
[/code]

このコードでツイートを有効にしているのですがこのコードの中に小数点２桁にするコードを書いたらエラーが出ました。

簡単に今回の質問の内容をまとめますと、保存した小数点２桁のタイムがツイートするときは正確に出すぎて（２桁以上）困っているということです。

説明がわかりにくくてゴメンなさい。  
ご回答お待ちしています。


CC BY-SA 3.0
2015-10-28T08:38:19.460
18165
2016-03-26T20:52:46.030
2015-10-28T08:40:07.043
845
11019
question
ios swift xcode
NSUserDefaultsで保存した小数をツイートする方法


Xcode 7、Swift 2.0を前提にして説明します。

[code]

    let str = "".stringByAppendingFormat("%.2f",cnt)
    time1.text = str
    
[/code]

`String`型で、`NSString`のたくさんのメソッドがそのまま使えるようになりました。

[code]

    let str = String(format: "%.2f", cnt)
    
[/code]

こういうイニシアライザが使えます。

[code]

    myComposeView1.setInitialText(" ただいまのタイムは \(cnt)秒です。 " )
    
[/code]

これも、

[code]

    let theText = String(format: " ただいまのタイムは %.2f秒です。", cnt)
    myComposeView1.setInitialText(theText)
    
[/code]

とすれば、小数点以下2桁で表示できます。

※`NSUserDefaults`に、いちいち浮動小数点数に変換しないで、Stringのまま保存していいんじゃないかという疑問は残りますけど……


CC BY-SA 3.0
2015-10-28T09:13:12.887
18167
2015-10-28T09:13:12.887
7362
18165
answer