所有可本地化字符串的字母顺序

时间:2017-12-04 20:19:35

标签: ios swift uitableview localization

我有一个简单的表格单元格,其中一些名称按英文字母顺序排列。 我设法用其他语言本地化,一切正常。 问题是:有一种方法或命令可以按字母顺序将本地化名称放在其他语言中吗?

import UIKit

var animals = [“A1”, “A2”, “A3”, “A4”, “A5”];

class TableViewController: UITableViewController {

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return animals.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCellController;
        cell.textLabel?.font = UIFont(name: "Futura-Bold", size: 18);
        cell.textLabel?.textColor = UIColor.black;
        cell.textLabel?.text = NSLocalizedString(animals[indexPath.row], comment: "");
        cell.smallBird.image = UIImage(named: animals[indexPath.row] + ".png");
        return cell
    }
} 

可本地化的字符串

/* Animals (EN) */

“A1" = “Cat”;
“A2" = “Dog”;
“A3" = “Owl”;
“A4" = “Leon”;
“A5" = “Tiger”;

1 个答案:

答案 0 :(得分:2)

您目前是通过按键订购的,而不是价值。

由于您需要图像的键和标签的值,并且您希望按值对行进行排序,因此您需要的不仅仅是键数组。

以下内容创建了一组按键和本地化名称的元组,按本地化名称排序。

let animals = ["A1", "A2", "A3", "A4", "A5"].map { ($0, NSLocalizedString($0, comment: "")) }.sorted { $0.1 < $1.1 }

然后更新cellForRowAt

cell.textLabel?.text = animals[indexPath.row].1
cell.smallBird.image = UIImage(named: animals[indexPath.row].0)

您无需添加&#34; .png&#34;使用UIImage(named:)时。