前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NSArray 和 KVC

NSArray 和 KVC

作者头像
EltonZheng
发布2021-01-22 11:31:11
3740
发布2021-01-22 11:31:11
举报
文章被收录于专栏:Elton的技术分享博客

Theocoacao有篇不错的介绍NSArray和KVC的文章,我给粗略翻译了一下。

NSArray的-valueForKey: 有一个不是很显著的特性. 你可以使用它返回一个由tree对象包装的值对象的数组。这句话可能不是很容易理解,看下面的例子就清楚了。

代码语言:javascript
复制
NSMutableArray * tree = [NSMutableArray array];
NSDictionary   * p = nil;   // parent
NSDictionary   * c = nil;   // child
NSNumber       * n = nil;   // value
int i;

for ( i = 0; i < 10; i++ )
{
n = [NSNumber numberWithInt: i];
c = [NSDictionary dictionaryWithObject:n forKey: @"someKey"];
p = [NSDictionary dictionaryWithObject: c forKey: @"storage"];
[tree addObject: p];
}

NSLog (@"%@", tree);
// here's the important part!
NSArray * justValues;
justValues = [tree valueForKeyPath: @"storage.someKey"];
NSLog (@"%@", justValues);

第一个NSLog输出的内容t:

代码语言:javascript
复制
NSLog (@"%@", tree);
(
{storage = {someKey = 0; }; },
{storage = {someKey = 1; }; },
{storage = {someKey = 2; }; },
{storage = {someKey = 3; }; },
{storage = {someKey = 4; }; },
{storage = {someKey = 5; }; },
{storage = {someKey = 6; }; },
{storage = {someKey = 7; }; },
{storage = {someKey = 8; }; },
{storage = {someKey = 9; }; }
)

第二个NSLog 返回一个数组的值,这个数组是由封装它的tree对象的 @”storage.someKey”:这个keypath提供的:

代码语言:javascript
复制
NSArray * justValues;
justValues = [tree valueForKeyPath: @"storage.someKey"];
NSLog (@"%@", justValues);
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

我发现它真的非常方便,当你使用Core Data要排序一个managed objects对象里面的一个数组的时候。 你可以用一个attribute就把它里面数组的值列出来。.


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档