从NSArray获取字符串值

nan*_*ome 5 cocoa core-data objective-c nsarray

我有一个NSArrayController和我当我得到selectedObjects并创建一个NSString,其值valueForKey:@"Name"返回

(
    "This is still a work in progress "
)
Run Code Online (Sandbox Code Playgroud)

而我想要的只是文字中""我将如何得到它?这也是我的代码:

NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]];

NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]];
NSLog(@"%@", nameFromArray);
Run Code Online (Sandbox Code Playgroud)

编辑:我在数组中也有其他字符串

dre*_*lax 16

当您调用valueForKey:数组时,它会调用数组中valueForKey:包含的每个元素,并在新数组中返回这些值,替换NSNull任何nil值.也没有必要selectedObjects从控制器复制数组,因为它无论如何都是不可变的.

如果阵列控制器的所选对象中有多个对象,并且您希望查看所选对象中所有项的名称键的值,则只需执行以下操作:


NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"];

for (id name in names)
    NSLog (@"%@", name);
Run Code Online (Sandbox Code Playgroud)

当然,如果您这样做,您可以立即打印出来:

NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]);
Run Code Online (Sandbox Code Playgroud)

如果selectedObjects数组中只有一个元素,并且您调用valueForKey:它,它仍将返回一个数组,但它只包含数组中单个元素的键值.你可以参考这个lastObject.

NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject];
NSLog (@"%@", theName);
Run Code Online (Sandbox Code Playgroud)