我有一个 NSArrayController
,当我得到 selectedObjects
并创建一个值为 valueForKey:@"Name"
的 NSString 时返回
(
"This is still a work in progress "
)
而我想要的只是 ""
中的文本,我如何才能得到它?另外,这是我的代码:
NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]];
NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]];
NSLog(@"%@", nameFromArray);
编辑:数组中还有其他字符串
最佳答案
当您在数组上调用 valueForKey:
时,它会在数组中包含的每个元素上调用 valueForKey:
,并在新数组中返回这些值,替换为NSNull
用于任何 nil
值。也不需要从 Controller 复制 selectedObjects
数组,因为它无论如何都是不可变的。
如果你的数组 Controller 的选中对象中有多个对象,并且你想查看选中对象中所有项的name键的值,只需执行:
NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"];
for (id name in names)
NSLog (@"%@", name);
当然,如果您这样做的话,您可以一次将它们全部打印出来:
NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]);
如果selectedObjects
数组中只有一个元素,你调用valueForKey:
,它仍然会返回一个数组,但它只会包含键的值数组中的唯一元素。您可以使用 lastObject
引用它。
NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject];
NSLog (@"%@", theName);
关于objective-c - 从 NSArray 获取字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068146/