Objective - C:组合多个字符串数组

时间:2011-11-22 19:57:38

标签: objective-c ios arrays string

我有多个NSString Arrays,我想根据用户偏好将它组合成一个数组。

创建数组:

static const NSString *string1[] = 
{...};

static const NSString *string2[] =
{...};

static NSMutableString *string3[] =
{

};

String3是保持数组,其中添加了所有用户的选择。有8种不同的字符串可以打开或关闭,因此有相当多的可能组合。我尝试过很多没有成功的事情。例如:

*string3=[string3 arrayByAddingObjectsInArray:string 2];

这会发出警告:

Instance method '-arrayByAddingObjectsInArry:' not found (return type defaults to 'id')

Receiver type 'NSMutableString **' is not 'id' or interface pointer, consider casting it to 'id'

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

Ummmmm尝试使用此代码

NSArray *array1 = [NSArray arrayWithObjects:@"Wow", @" that", nil];
NSArray *array2 = [NSArray arrayWithObjects:@" is", @" really", nil];
NSArray *array3 = [NSArray arrayWithObjects:@" terrible", @" code", nil];

NSArray *fullArray = [array1 arrayByAddingObjectsInArray:[array2 arrayByAddingObjectsInArray:array3]];

NSLog(@"%@", fullArray);

您上面遇到的问题是因为您尝试在没有定义该方法的类上使用arrayByAddingObjectsInArray:NSArray是使用该方法的类,因此您需要NSArray的实例才能像上面的代码一样使用arrayByAddingObjectsInArray

答案 1 :(得分:1)

你的基本问题是你混淆了两个叫做“阵列”的东西。你有的是C数组 - 它们不是对象,因此你不能向它们发送消息(例如arrayByAddingObjectsInArray:)。您想要的是NSArray。

将它们全部声明为NSArray *strings1, *strings2, *strings3,然后编写一些方法来初始化它们,如下所示:

+ (id)createArrays {
    strings1 = [[NSArray alloc] initWithObjects:@"Something", @"Something else", nil];
    strings2 = [[NSArray alloc] initWithObjects:@"Yet another thing", nil];
    strings3 = [[strings1 arrayByAddingObjectsFromArray:strings2] retain];
}

你需要确保在这里正确管理你的记忆,否则你会像疯了一样泄漏。让对象属于某个类通常会更好,因此您可以使用setter而不是管理内存,而不是将它们存储在全局变量或静态变量中。

答案 2 :(得分:0)

NSString不是数组,存在术语问题。

NSString是对象,因此要从静态文本创建NSString:

NSString *string1 = @"the text";

要组合字符串,请使用NSString下的方法。

将字符串添加到字符串3(NSMutableString):

[string3 appendString: string2];

“未找到实例方法-arrayByAddingObjectsInArry:”表示没有名为-arrayByAddingObjectsInArry:的方法作为NSString类的一部分,因为这是您要向其发送消息的类实例。 (是的,有一种类型,但这不是问题)。

考虑浏览Xcode Organizer窗口的“文档”选项卡中的NSString文档。

答案 3 :(得分:0)

您正在使用包含NSString对象的C数组。这个想法是:

*string3 = malloc(sizeof(NSString*) * count); // Array of count strings
string3[0] = string1[0]; // Put on at index 0
NSLog(@"%@", string1[0]); // Log string at index 0

“count”是“string1”加上“string2”的总和。

你可以用这个做一个for循环。