如何将此对象存储在我的 iOS 类中?

Posted

技术标签:

【中文标题】如何将此对象存储在我的 iOS 类中?【英文标题】:How do I store this object in my iOS class? 【发布时间】:2013-07-19 14:27:35 【问题描述】:

我正在为 ios 创建我的第一个 Master-Detail 应用程序。

我想存储以下内容

    姓名 网址

在我的 UITableView 中,我计划只显示名称(已排序),但是当点击名称时,另一个视图将加载一个按钮,该按钮将使用 WebURL 启动 Safari

我尝试使用 MSMutableArray,但发现它不可排序。 NSDictionary 也是如此。

任何想法(或示例或示例链接)将不胜感激

我正在尝试使用 iOS 7.0 中未弃用的方法 并计划支持 iOS 6

早期版本是 + 但我可以不支持 3、4、5。

【问题讨论】:

您当然可以对 NS(Mutable)Array 进行排序。但大概您想要对实体对进行排序,而不是仅对名称或 URL 进行排序。为此,我可能会将两者放在字典中,将字典放在数组中,然后使用“sortedArrayUsing ...”方法之一进行排序。 【参考方案1】:

每个项目都有一个 NSDictionary 的 NSMutableArray 非常好。您可以对其进行排序。

NSMutableArray *rows = @[].mutableCopy;
[rows addObject:@@"name": @"Bob", @"url": [NSURL URLWithString:@"http://bob.com"]];
[rows addObject:@@"name": @"Alice", @"url": [NSURL URLWithString:@"http://alice.net"]];
NSLog(@"%@", rows);

[rows sortUsingComparator:^NSComparisonResult(id obj1, id obj2) 
  return [[obj1 valueForKey:@"name"] compare:[obj2 valueForKey:@"name"] options:NSNumericSearch];
];
NSLog(@"%@", rows);

输出:

2013-07-20 00:33:31.682 MyApp[28496:303] (
        
        name = Bob;
        url = "http://bob.com";
    ,
        
        name = Alice;
        url = "http://alice.net";
    
)
2013-07-20 00:33:31.682 MyApp[28496:303] (
        
        name = Alice;
        url = "http://alice.net";
    ,
        
        name = Bob;
        url = "http://bob.com";
    
)

【讨论】:

如果我创建一个类并拥有对象数据的属性。我可以在 UITableView 中使用该类作为一行吗?然后我可以保留我的自定义对象的 NSArray 您可以使用任何您想要的数据作为表格视图的数据。您负责在 cellForRow 委托方法中构建每个单元格。支持什么数据取决于您,自定义对象数组是常见的选择。【参考方案2】:

您可以对 NSArray 进行排序,您只需自己编写比较函数,因为 NSArray 存储对象,以及如何对可能包含数千个值的对象进行排序。这里有一篇关于它的好帖子。这应该有望完成工作。

How to sort an NSMutableArray with custom objects in it?

【讨论】:

以上是关于如何将此对象存储在我的 iOS 类中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 web.config 文件中存储字典对象?

将自定义对象存储到 NSMutableArray,然后将此 NSMutableArray 存储到 NSUserDefaults

会话中的弹簧存储对象

如何在 redux 存储中保存数组对象数据

Unity 将游戏对象乱序存储在我的数组中

当我在 C++ 中派生一个类时,它是不是会创建一个基类对象并将其作为我的成员变量存储在派生类中?