2013-02-08 55 views
0

我买了一个INT对象的NSMutableArray值 ,我可以通过获得一定值:讨论id的stringValue函数的功能?

int *v0=[[[arrayObj objectAtIndex:0] intValue]; 

是没有问题的。

但 我得到的NSString一个NSMutableArray的对象值 ,我无法通过获得一定值:

NSString *v0=[[[arrayObj objectAtIndex:0] stringValue]; 
//raises error 

我想学习和了解到底是什么stringValue的对...,为什么这个错误发生?

NSString * v0 = [arrayObj objectAtIndex:0]; 按预期工作。我在asusme中使用了一些null终止的指针,所以它可以挖掘价值。 林不知道这行也是unicode /编码的字符串安全代码。

的结论是:
想知道stringValue的的一些行O编码目的网页摘要

+0

'NSString * v0 = [... intValue]'不是问题? – trojanfoe 2013-02-08 16:30:00

+0

错字。问题已纠正。它是int * v0 – 2013-02-08 16:32:28

+0

再次错误输入;它是'int'而不是'int *'。 – trojanfoe 2013-02-08 16:36:04

回答

1

我买了一个INT对象的NSMutableArray值

这是不可能的,可可的数组总是包含对象。你可能有NSNumber对象的数组包裹整数,如:

NSArray *arrayOfNumbers = @[@1, @2, @3]; 

NSNumber对象有一个intValue方法,所以此工程:

int value = [arrayOfNumbers[0] intValue]; 

在另一方面,当你有一个数组字符串...

NSArray *arrayOfStrings = @[@"1", @"2", @"3"]; 

...要直接访问单个元素,而字符串对象转换成别的东西:

NSString *element = arrayOfStrings[0]; 

NSString对象不了解stringValue方法:

[arrayOfStrings[0] stringValue]; // crash: does not recognize selector 

回到一开始,我们从NSNumber对象第一阵列的确了解stringValue。你可以用它来将数字转换为字符串:

NSString *intString = [arrayOfNumbers[0] stringValue]; 

为了使混乱完美,NSString了解intValue消息:

int value = [arrayOfStrings[0] intValue]; 

这里intValue手段,试图将字符串转换以普通的C int值。

1

你会得到(但未能张贴你的问题),该错误会未知选择发送到实例这是因为NSString没有stringValue方法。

你建议的做法是正确的:

NSString *v0 = [arrayObj objectAtIndex:0]; 

编辑(由@ An​​swerbot的回答提示):

你感到困惑的原因是,[NSString intValue]用于将字符串值转换为整数,只要字符串表示一个整数(即@"123")。但是,由于对象已经是字符串,因此您不需要此字符串。因此没有提供。

+0

所以我的意思是这样的: 什么是stringValue? 我不在寻找解决方案,但了解stringValue功能 – 2013-02-08 16:33:44

+1

@ N.Ramos在某些UI控件中使用'stringValue'从控件中提取字符串或在控件中设置字符串。 – trojanfoe 2013-02-08 16:36:41