我有一个带有int值的NSMutableArray对象 我可以通过以下方式获得一定的价值:
int *v0=[[[arrayObj objectAtIndex:0] intValue];
没有问题。
但是 我有一个带有NSString值的NSMutableArray对象 我无法通过以下方式获得某种价值:
NSString *v0=[[[arrayObj objectAtIndex:0] stringValue];
//raises error
我想学习并准确理解stringValue for ... 以及为什么会出现此错误?
NSString * v0 = [arrayObj objectAtIndex:0]; 按预期工作。我asusme它的某种指针与null终止,所以它可以leech值。 我不确定这行也是unicode / encoded字符串安全代码。
总结:
想知道stringValue的用途是什么行o代码片段
答案 0 :(得分:1)
您将收到的错误(但未提交您的问题)将未知选择器发送到实例,这是因为NSString
没有{{1}方法。
您建议的方法是正确的:
stringValue
编辑(由@ Answerbot的回答提示):
您感到困惑的原因是NSString *v0 = [arrayObj objectAtIndex:0];
用于将字符串值转换为整数,只要字符串表示整数(即[NSString intValue]
)。但是,对于字符串,您不需要这个,因为该对象已经是一个字符串。因此没有提供。
答案 1 :(得分:1)
我有一个带有int值的NSMutableArray对象
这是不可能的,Cocoa数组总是包含对象。您可能有一个包含整数的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
值。