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

如何在Objective-C中声明字符串类型的二维数组?

如何解决《如何在Objective-C中声明字符串类型的二维数组?》经验,为你挑选了2个好方法。

如何在Objective-C中声明字符串类型的二维数组?



1> Jesse Rusak..:

首先,您可以考虑使用一个类来保存内部数组的字符串,或者从plist文件中加载它(在其中很容易创建一个2d字符串数组).

对于直接声明,您有几种选择.如果要使用NSArray,则必须手动创建如下结构:

NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
    [strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}

或者,使用数组文字,您可以获得这样的不可变版本:

NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]

然后你可以像这样使用它:

NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];

初始化有点尴尬,但如果你想使用NSArray方法,那就是要走的路.

另一种方法是使用C数组:

NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil

然后像这样使用它:

NSString *s = strings[i][j];

这不那么笨拙,但是当你将它们放入并从数组中删除时,你必须小心保留/复制释放它们.(当然,除非你使用ARC!)NSArray会为你做这个,但是对于C风格的数组,你需要做这样的事情来替换一个数组:

[strings[i][j] release];
strings[i][j] = [newString retain];

另一个区别是你可以将nil放在C风格的数组中,而不是NSArrays - 你需要使用NSNull.另请参阅Stack Overflow问题Cocoa:使用NSString进行内存管理,了解有关NSString内存管理的更多信息.



2> Steve McLeod..:

如果要声明和初始化二维字符串数组,可以执行以下操作:

NSArray *myArray = [NSArray arrayWithObjects:
                       [NSArray arrayWithObjects:@"item 1-1", @"item 1-2", nil],
                       [NSArray arrayWithObjects:@"item 2-1", @"item 2-2", nil],
                       [NSArray arrayWithObjects:@"item 3-1", @"item 3-2", nil],
                       [NSArray arrayWithObjects:@"item 4-1", @"item 4-2", nil],
                       nil];

这样可以为您提供不可变的数组.

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