ios – 核心数据目录(树)结构

ios – 核心数据目录(树)结构,第1张

概述核心数据树结构有很多主题,但我还有一些问题. 我正在尝试创建的是一个简单的目录结构. (包含子文件夹的子文件夹的文件夹,……以及稍后的文件.) 我现在有这个文件夹实体: 我正在添加这样的文件夹:[显然这是虚拟数据,这将在以后动态插入] // root 1Folder *root1 = [NSEntityDescription insertNewObjectForEntityForName:@"F 核心数据树结构有很多主题,但我还有一些问题.

我正在尝试创建的是一个简单的目录结构. (包含子文件夹的子文件夹的文件夹,……以及稍后的文件.)

我现在有这个文件夹实体:

我正在添加这样的文件夹:[显然这是虚拟数据,这将在以后动态插入]

// root 1Folder *root1 = [NSEntityDescription insertNewObjectForEntityForname:@"Folder" inManagedobjectContext:context];root1.name = @"Root 1";root1.parent = nil;// folder 1 in root 1Folder *subFolder1 = [NSEntityDescription insertNewObjectForEntityForname:@"Folder" inManagedobjectContext:context];subFolder1.name = @"Folder 1 in root 1";subFolder1.parent = root1;root1.children = [NSSet setWithObjects: subFolder1,nil];

现在我想为每个文件夹创建一个VIEwController,然后为每个子文件夹打开一个新的VIEwController. (或无限的UITabelVIEw)

当我用这段代码循环文件夹实体时:

NSArray *folders = [context executeFetchRequest:fetchRequest error:&error];for(Folder *folder in folders){   NSLog(@"Profile: %@",folder.name);}

我立刻得到了所有的文件夹.

所以问题是:如何在树形结构中记录它?所以我可以先为所有根文件夹创建一个VIEwController,然后为每个子文件夹创建另一个VIEwController等等…
(换句话说:我如何读取此实体,因为我将它放在UITabelVIEw中)

解决方法 您没有详细说明如何构造获取请求,但关键是使用nspredicate过滤结果,以便在任何给定时间包含感兴趣的Folder对象.为此,您需要在视图控制器中存储对当前父文件夹的引用:

@property (reaDWrite,strong) Folder *parentFolder;

如果你在树的根部,这将是nil,否则它将引用当前正在显示其内容的文件夹.

然后在谓词中使用此属性:

NSFetchRequest *fetchRequest = ...nspredicate *predicate = [nspredicate predicateWithFormat:@"parent = %@",self.parentFolder];[fetchRequest setPredicate:predicate];

当你在根目录时,这将只选择父项为零的文件夹实例(即只有根级别对象).在每个其他级别,它仅选择其中父项是当前父文件夹的文件夹.

作为旁注,在示例代码中,没有必要设置subFolder1.parent和root1.children.核心数据逆向关系管理意味着您只需要在关系的一侧执行此 *** 作.这两种方式都没有任何损害(除了非常小的性能影响),但它也没有用处.

总结

以上是内存溢出为你收集整理的ios – 核心数据目录(树)结构全部内容,希望文章能够帮你解决ios – 核心数据目录(树)结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存