【问题标题】:Getting the string value from a NSArray从 NSArray 获取字符串值
【发布时间】:2011-01-05 07:19:12
【问题描述】:

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

编辑:数组中还有其他字符串

【问题讨论】:

    标签: objective-c cocoa core-data nsarray


    【解决方案1】:

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

    如果您的数组控制器的选定对象中有多个对象,并且您想查看选定对象中所有项目的名称键的值,只需执行以下操作:

    
    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2016-08-31
      • 2015-09-23
      相关资源
      最近更新 更多