时间:2010-09-27 17:57:46

标签: objective-c nsstring types casting

有什么方法可以将id类型更改为NSString对象? 请注意我的代码的以下行。

NSString *value = [appDelegate.bird_arr objectAtIndex:rowClicked] ;

在这个appDelegate中是基于导航的程序中我的AppDelegate类的对象,bird_arr是NSMutableArray的对象。 我想使用单击的行中写的字符串。但objectAtIndex:返回id类型。 我们有没有办法将此id类型更改为NSString或我可以在特定行中收集字符串的任何其他方式?

6 个答案:

答案 0 :(得分:22)

答案 1 :(得分:5)

答案 2 :(得分:1)

id type”只是告诉我们返回值是一个对象 - 除此之外什么都没有。它可能已经是一个NSString对象,或者它可能是其他东西。如果此数组中的所有对象都是字符串,那么您的工作就完成了。如果它们是别的东西,你需要一些方法将其他东西变成字符串。

答案 3 :(得分:0)

假设对象一个NSString,转换为NSString *应该可以正常工作:

NSString* value = (NSString*)[appDelegate.bird_arr objectAtIndex:rowClicked];

答案 4 :(得分:0)

可以在更安全的一侧进行铸造,但这里不需要。在铸造和没有铸造之后我用代码尝试了一些东西并且工作正常。 我想,Id保存了引用以及在运行时完成的引用类型。 但是我找到了另一种更好的方法来以字符串格式在特定行获取文本。 我是使用cellForRowAtIndex:index方法完成的。这将返回指定索引处的单元格,然后使用textLabel属性。 Thanx为您的回复和帮助伙计。

答案 5 :(得分:0)

在Foundation中,所有对象都继承NSObject类,该类具有以下方法:

+ (NSString *)description;

所以您可以这样:

NSString *value = [[appDelegate.bird_arr objectAtIndex:rowClicked] description];