当前位置:  开发笔记 > IOS > 正文

创建结构数组的最简单方法是什么?

如何解决《创建结构数组的最简单方法是什么?》经验,为你挑选了3个好方法。

在Cocoa中创建结构数组的最简单方法是什么?



1> Ashley Clark..:

如果你想使用NSArray,你需要装箱你的结构.您可以使用NSValue类对它们进行编码.

像这样编码:

struct foo {
    int bar;
};

struct foo foobar;
foobar.bar = 3;
NSValue *boxedFoobar = [NSValue valueWithBytes:&foobar objCType:@encode(struct foo)];

然后把它拿回来:

struct foo newFoobar;

if (strcmp([boxedFoobar objCType], @encode(struct foo)) == 0)
    [boxedFoobar getValue:&newFoobar];



2> Georg Schöll..:

或者动态分配:

struct foo {
    int bar;
};

int main (int argc, const char * argv[]) {
    struct foo *foobar = malloc(sizeof(struct foo) * 3);
    foobar[0].bar = 7; // or foobar->bar = 7;

    free(foobar);
}



3> Rich Catalan..:

如果你对普通的旧C数组没问题:

struct foo{
    int bar;
};

int main (int argc, const char * argv[]) {
    struct foo foobar[3];
    foobar[0].bar = 7;
}

如果你想要一个NSArray,你需要一个包装器对象.大多数原语使用NSNumber,但这可能不适用于您的结构.包装器写起来并不是很难,尽管这样会破坏使用结构的目的!

编辑:这是我没有做过但只是想到的事情.如果你考虑一下,NSDictionary基本上是一个对象的结构.您的键可以是NSStrings的结构组件的名称,您的值可以是适用的Cocoa包装器中包含的相应数据类型.然后把这些词典放在NSArray中.

我想要的是,你有很多选择.如果我是你,我会做一些实验,看看什么效果最好.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有