我试图在我的类中的-description方法返回的NSString中包含数组的元素。没有线索如何在Objective-C中做到这一点...在Java中有字符串连接或StringBuilder,Obj-C中的等价物是什么?如何在描述中包含C数组
TIA ..
我试图在我的类中的-description方法返回的NSString中包含数组的元素。没有线索如何在Objective-C中做到这一点...在Java中有字符串连接或StringBuilder,Obj-C中的等价物是什么?如何在描述中包含C数组
TIA ..
下可能要“构建”你的数组的字符串表示。注意它正在使用数组中对象的-description
方法。如果你想要不同的东西,你将不得不做出必要的改变。
- (NSString *)description: (id) myArr {
NSMutableString *returnString = [[[NSMutableString alloc] init] autorelease];
for (int i = 0, j = [myaArr count]; i < j; i++) {
[returnString appendString: [[myArr objectAtIndex: i] description]];
}
return [NSString stringWithString: returnString];
}
编辑:
正如JeremyP说,我回答了这个使用Objective-C数组。我想我刚开始写代码时就忘记了这个问题。尽管如此,我将会把我的答案作为一种替代方法来实现。我也将返回字符串类型从可变字符串修复为不可变字符串(因为它应该是这样)。
你的线程的标题是关于C数组的,所以这里是对用C数组处理的jsumners的答案的一个修改。
myArray的被假定为一个的ivar正是如此宣称:假定
int* myArray;
储存myArray的在某一时刻要被malloc分配和它的大小是在一个实例变量声明:
int myArraySize;
用于描述代码都像
- (NSString *)description
{
NSMutableString *returnString = [[[NSMutableString alloc] init] autorelease];
for (int i = 0 ; i < myArraySize ; i++)
{
if (i > 0)
{
[returnString appendString: @", "];
}
[returnString appendFormat: @"%d", myArray[i]];
}
return [NSString stringWithFormat: @"[%@]", returnString];
}
有差异。上面的版本使用括号分隔符和元素之间的逗号来格式化字符串。此外,它返回一个NSString,而不是一个NSMutableString,这不是一个大问题,但我觉得如果你说你正在返回一个不可变的对象,你可能应该这样做。
只要使用NSArray的componentsJoinedByString:
方法以及它们之间任何你想要的参数作为参数。
NSString *elementsSquishedTogether = [myArray componentsJoinedByString:@""];
NSString *connectedByACommaAndSpace = [myArray componentsJoinedByString:@", "];
如果你有一个C数组,你可以用NSArray *converted = [NSArray arrayWithObjects:yourCArray count:yourArrayCount]
把它变成一个NSArray。
我可能会补充说* *描述*已经由NSArray提供,所以只需将C数组添加到NSArray就可以为您提供NSArray的内置字符串格式。这可能并不理想,但如果是的话,这很方便。 – 2010-06-11 16:30:04
我以为这样的方法存在,但是当我回顾文档时,我必须掩盖它。 – 2010-06-11 17:24:49
arrayWithObjects:count:仅在C数组中的东西是OBjective-C对象时才起作用。 – JeremyP 2010-06-14 07:25:04
是的,你这样做。 returnString需要自动发布。 – JeremyP 2010-06-11 13:08:21
修好了,谢谢。 – 2010-06-11 13:12:42
其他问题[myArr objectAtIndex:** 0 **] – JeremyP 2010-06-11 13:28:00