在Cocoa中创建结构数组的最简单方法是什么?什么是创建一个结构数组最简单的方法?
回答
如果你想使用一个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];
如果您能够接受正规旧的C数组:
struct foo{
int bar;
};
int main (int argc, const char * argv[]) {
struct foo foobar[3];
foobar[0].bar = 7;
}
如果你想要一个NSArray,你需要一个包装对象。大多数原语使用NSNumber,但这可能不适用于你的结构。一个包装器不会很难写,尽管这种方式会破坏使用结构的目的!
编辑:这是我没有做的,但只是想到了。如果你考虑一下,NSDictionary基本上是一个对象的结构。您的键可以是NSStrings的struct组件的名称,您的值可以是适用的Cocoa包装器中包装的相应数据类型。然后把这些字典放在一个NSArray中。
我想主要是你有很多选择。如果我是你,我会做一些尝试,看看最好的。
或动态分配:
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);
}
是否需要一个结构?如果可以,将它作为对象通常会更好。然后你可以使用像KVC和Bindings这样的东西。
嘿彼得,现在我不认为我需要这些,但仍然是我感兴趣的话题。我刚刚打开了一个具体问题:http://stackoverflow.com/questions/393662 – 2008-12-26 10:00:16
它更容易使用类,但是如果您需要使用C和像CGRect或其他目标c结构一样工作。我试着使用NSValue,但它的工作奇怪...:
CGRect rect =CGRectMake(20,220,280,30);
NSValue* rectValue = [NSValue valueWithCGRect:rect];
NSArray *params1;
params1= [NSArray arrayWithObjects:rectValue,nil];
但是,我可以得到的CGRect值仅为:
CGRect cgr = [[params1 objectAtIndex:0] CGRectValue];
当我使用这个:
id currentVal = [params1 objectAtIndex:0];
void* buffer;
buffer=[currentVal pointerValue];
它会导致错误...
问题解决了here
- 1. 什么是创建标签式菜单的最简单方法?
- 2. 在java中构建IDE最简单的方法是什么?
- 3. 从Tuple2数组创建案例类对象的最简单方法是什么?
- 4. 什么是创建天气预报的最简单方法?
- 5. 创建响应式图像的最简单方法是什么?
- 6. 什么是创建STL身份映射的最简单方法?
- 7. 用C#创建Excel表最简单的方法是什么?
- 8. 在Java中创建GUI的最简单方法是什么?
- 9. 创建一个windows + mac + ios + android游戏,最简单的方法是什么?
- 10. 在wxPython中创建一个形状窗口最简单的方法是什么?
- 11. 最简单的方法创建运行结构与休眠
- 12. 迭代2个类似目录结构的最简单方法是什么?
- 13. PHP中用两个并行索引数组创建关联数组最简单的方法是什么?
- 14. 在行上打印数组的最简单方法是什么?
- 15. 什么是创建Python包结构和蛋的简单说明?
- 16. 构建类层次结构的最佳方法是什么?
- 17. 为MySQL创建一个简单的客户端最简单的方法是什么?
- 18. 将一个System.Data.DataSet导入Excel的最简单方法是什么?
- 19. 什么是重构结构数组的最佳方式?
- 20. 过滤数组以创建另一个数组的最佳方式是什么?
- 21. 在WebStorm上查看结果最简单的方法是什么?
- 22. 在java swing中创建表单最简单的方法是什么?
- 23. 最快的方法来创建一个结构数组的只读副本?
- 24. 在Clojure中保存地图/结构体的最简单方法是什么?
- 25. 将这行文本读入结构的最简单方法是什么?
- 26. 将char数组转换为WCHAR数组最简单的方法是什么?
- 27. 给定一个字符串数组什么是随机排序他们最简单的方法是什么?
- 28. 在PHP中加载一组文字数据的最简单方法是什么?
- 29. 构建这个数据库的最好方法是什么?
- 30. 创建一个简单的数组
一个很好的建议,虽然有拳击和拆箱的性能。这并不可怕,但如果你需要速度的话,这一点是值得注意的。 – 2011-09-18 20:52:52