[英]Objective-C string arrays
我有这样一个字符串数组:
NSArray *names;
names = [NSArray arrayWithObjects:
@"FirstList",
@"SecondList",
@"ThirdList",
nil];
我正在尝试将此字符串数组的元素分配给这样的字符串变量:
NSString *fileName = names[0]; // "Incompatible types in initialization"
或铸造
NSString *fileName = (NSString)names[0]; // "Conversion to non-scalar type requested"
我正在尝试执行此操作,因此我可以在将字符串作为参数的方法中使用字符串,例如:
NSString *plistPath = [bundle pathForResource:filetName ofType:@"plist"];
没有办法将字符串数组的元素分配给字符串变量吗?
names[0]
类的NSArray进行索引,因此本文中的代码实际上已经可以使用。 但是在问这个问题时,它给出了这个问题中提到的错误。 您不使用C数组符号来访问NSArray对象。 在第一个示例中使用-objectAtIndex:方法:
NSString *fileName = [names objectAtIndex:0];
这样做的原因是NSArray不是“ Objective-C的一部分”。 这只是Cocoa提供的类,就像您可以编写的任何类一样,并且没有特殊的语法特权。
NSArray
是与C数组不同的专用数组类。 要引用其内容,请向其发送一个objectAtIndex:
消息:
NSString *fileName = [names objectAtIndex:0];
如果要执行显式转换,则需要转换为NSString *
指针,而不是NSString
:
NSString *fileName = (NSString *)[names objectAtIndex:0];
通过新的Objective-C文字可以使用:
NSString *fileName = names[0];
因此您的代码可能如下所示:
- (void)test5518658
{
NSArray *names = @[
@"FirstList",
@"SecondList",
@"ThirdList"];
NSString *fileName = names[0];
XCTAssertEqual(@"FirstList", fileName, @"Names doesn't match ");
}
检查对象下标以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.