如何使用for循环用0位占位符命名我的图像?

时间:2015-05-22 02:35:57

标签: ios swift parse-platform

我有大约150张图片,我正在下载并通过for循环上传。我也在为每个人命名。我根据图像上传时的i值来命名它们,但这只能给出i值的确切数字。每个名字都需要三位数。

例如,我需要001.png,002.png,... 123.png,124.png ......等等,但我得到1.png,2.png ... 123.png, 124.png ...等。

我的代码在这里:

var n = 4  
func addCards(urlString:String, numberString:String) {
    let url = NSURL(string: urlString)
    let urlRequest = NSURLRequest(URL: url!)

    NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue(), completionHandler: {
        response, data, error in

        var image = UIImage(data: data)

        let imageData = UIImagePNGRepresentation(image)
        let imageFile = PFFile(name: "XY\(n)_\(numberString)", data:imageData)

        var cardUpload = PFObject(className:"Cards")
        cardUpload["Image"] = imageFile
        cardUpload["Expansion"] = "XY\(n)"
        cardUpload["Number"] = "XY_\(n)_\(numberString)"

        //THIS (Number) IS THE LINE THAT NAMES MY FILES    

        cardUpload.save()
    })
}

for var i = 1; i < 151; i++ {
    addCards("http://image.com/image\(i)", "\(i)")
}

3 个答案:

答案 0 :(得分:4)

您需要将字符串格式化为3位而不是仅使用索引(这是一个未格式化的Int),所以:

String(format: "%03d.png", i)

答案 1 :(得分:1)

使用格式字符串“%03d”获取具有三位数字和前导零的数字。

for myInt in 1...150 {
  println(String(format: "%03d", myInt))
}

答案 2 :(得分:1)

我非常喜欢使用Cocoa的格式化程序类。在你的情况下,我使用NSNumberFormatter,这非常适合从数字形成各种字符串。试试这段代码 - 它输出一个文件名列表,从 001.png 150.png

let threeDigitFormatter = NSNumberFormatter()
threeDigitFormatter.minimumIntegerDigits = 3

for imageNumber in 1...150 {
  let formattedImageNumber = threeDigitFormatter.stringFromNumber(imageNumber)!
  let filename = "\(formattedImageNumber).png"
  println(filename)
}