【问题标题】:Sort a mutable array based on the sort of another mutable array?根据另一个可变数组的排序对可变数组进行排序?
【发布时间】:2015-08-13 19:31:29
【问题描述】:

有没有一种方法可以根据我对另一个数组所做的字母排序来对数组进行排序?实际用途是尝试将带有用户名的数组与包含这些用户名的数组相关联。我有两个包含此信息的单独列表,我需要根据用户的姓名按字母顺序对用户进行排序,但我也需要访问他们的用户名。因此,为了做到这一点,我试图在表格视图单元格中包含两条数据,只显示名称并隐藏用户名。

我无法将包含名称的数组反向排序为用户名,因为如果两个人的名称相同,这会导致很多问题。

我尝试使用 NSMutableDictionary 但这不起作用。任何帮助都会非常有帮助!

【问题讨论】:

    标签: ios sorting nsmutablearray nsmutabledictionary


    【解决方案1】:

    我有两个包含此信息的单独列表

    你的问题。不要使用两种数据结构来存储一个对象的各个部分。

    创建一个代表用户的模型对象,包括标识符和名称。然后一切都很容易。整个物体很小:

    @interface User
    @property (nonatomic, readwrite, copy) NSString *identifier;
    @property (nonatomic, readwrite, copy) NSString *name;
    @end
    @implementation
    @end
    

    按属性对对象进行排序很简单。

    即使系统的其他部分没有使用这个对象,我仍然会为这个视图控制器创建一个“视图模型”对象。 (但最好将其视为常规模型对象并在整个系统中使用它。)

    【讨论】:

    • 这确实比使用两个数组更有意义。当您说创建模型对象时,您能否提供更多有关如何执行此操作的信息?
    • 上面的实现是一个模型对象。它只是意味着“一个保存数据的对象”。 “视图模型”对象只是一个专门保存数据的对象,以使显示它们的视图变得容易。有时它们的组织方式略有不同(可能包含属性字符串或屏幕坐标),但它只是模型对象的特殊版本。 MVC 模式是 Cocoa 开发的核​​心部分之一。 developer.apple.com/library/ios/documentation/General/…
    • 关键是你有一个保存所有数据的模型,显示数据的视图,以及在两者之间协调的控制器。视图控制器不应该保存数据。他们只是将需要数据的视图连接到保存它的模型。 (称为 MVVM 的更高级的版本已经开始流行,但它只是对这个想法的进一步扩展,将视图模型添加为显式而不是“我们经常这样做”层。)
    【解决方案2】:

    我不确定您在这里真正要问的是什么。

    但是让我来谈谈这个。假设您有一个按字母顺序排列的用户名数组。从那,你为什么不创建一个NSHastable<key,value>=<username,name>

    假设您的用户名是唯一的,您也不会遇到两个名称相互冲突的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多