创建具有订单支持的 NSDictionary

发布于 2024-12-23 23:58:28 字数 91 浏览 2 评论 0原文

我需要一个 NSDictionary 对象,它不仅支持键>值存储,还支持像 Array 一样的键序列。

Objective-C 上有什么东西吗?

I need a NSDictionary object that not only support key->value storage but also support key sequence just like Array does.

Is there something exists on Objective-C ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

趴在窗边数星星i 2024-12-30 23:58:28

Monolo 的答案是正确的方法。

[self allKeys] 不返回有序序列。它是一个 NSSet 风格。

我编写了一个名为 PLHash 的类,它具有许多功能:

  • 键值存储
  • 键顺序支持
  • 项目最大大小控制(将 maxItems 设置为 PLHash,它将按 FIFO 保留项目)

这里是 URL
https://github.com/xhan/PlutoLand/blob/master /PlutoLand/Additions/PLHash.h

Monolo's answer is the right way to do this.

[self allKeys] does not return ordered sequence. it's an NSSet style.

And I write a Class named PLHash that has many features:

  • key value storage
  • key order support
  • items max size control ( set a maxItems to PLHash and it will keep items by FIFO )

here is the URL
https://github.com/xhan/PlutoLand/blob/master/PlutoLand/Additions/PLHash.h

半枫 2024-12-30 23:58:28

没有内置任何内容,但您可以使用字典旁边的键数组来记录顺序。

Nothing built in, but you can use an array of keys along side the dictionary to record the order.

九歌凝 2024-12-30 23:58:28

您最好要么获取 allkeys 数组并对其进行排序,然后获取键的值,要么创建自己的类以您想要的方式存储对象。听起来你确实在做一些 NSDictionary 真正不是为了做的事情,你想要做什么,你想要对键进行排序?

You would be best off either getting the allkeys array and sorting that then getting the value for a key or making your own class to store objects the way you want them. It really sounds like you are doing something NSDictionary really wasn't built to do, what are you trying to do that you want the keys sorted?

酒几许 2024-12-30 23:58:28

一种选择是在 nsdictionary 上创建一个类别,将其称为排序键或其他名称,它返回排序的 [self allKeys]。

更新:现在我没有从手机上回复,这是我的建议,为了清晰起见,写得很详细,并假设您正在使用 ARC:

@interface NSDictionary (sort)

- (NSArray *)sortedKeys;

@end

@implementation NSDictionary (sort)

- (NSArray *)sortedKeys {

    NSArray *keyArray = [self allKeys];
    NSArray *sortedKeyArray = [keyarray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

    return sortedKeyArray;
}

@end

我个人认为子类化 NSDictionary 不是正确的方法。

One option is to create a category on nsdictionary, call it sortedKeys or something, which returns a sorted [self allKeys].

Update: Now that I'm not responding from my phone, here's my suggestion, written verbosely for clarity, and assuming you're using ARC:

@interface NSDictionary (sort)

- (NSArray *)sortedKeys;

@end

@implementation NSDictionary (sort)

- (NSArray *)sortedKeys {

    NSArray *keyArray = [self allKeys];
    NSArray *sortedKeyArray = [keyarray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

    return sortedKeyArray;
}

@end

I personally don't think that subclassing NSDictionary is the way to go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文