objective-c - 从 NSArray 获取字符串值

标签 objective-c cocoa core-data nsarray

我有一个 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/

相关文章:

iphone - 在Cocoa中,如何使用 NSTimeZone 以字符串形式获取系统时区偏移量?

objective-c - UITextfield 检查它是否是数字

swift - Swift 中的核心数据属性重置

objective-c - 如何在我的自定义 TableviewCell 中访问 ImageView 而无需创建其导出

ios - 介于 0.0 和 1.0 之间的界限值是什么意思?

objective-c - Swift 中 load 方法的替代方法

ios - 为什么在关闭 View Controller 时不循环保留(非圆弧)

ios - EXC_BAD_ACCESS 在 Swift 中访问自定义 MKAnnotation 的属性时

ios - 在 iOS 中从 xcdatamodel 访问 FetchRequest

ios - 核心数据和私有(private)框架