我有一个像这样的数组
Word array (
{
translation = (
{
name = Roma;
lang = it;
},
{
name = Rome;
lang = en;
}
);
type = provenance;
value = RMU;
},
{
translation = (
{
name = "Milano";
lang = it;
},
{
name = "Milan";
lang = en;
}
);
type = destination;
value = MIL;
},)
我的想法是使用NSPredicate过滤它并接收基于lang键的字典数组,我想通过过滤lang == it,
得到类似的东西。Word array (
{
name = Roma;
lang = it;
type = provenance;
value = RMU;
},
{
name = "Milano";
lang = it;
type = destination;
value = MIL;
})
我无法简化数据,因为它来自“JSON”服务。
我尝试过使用SUBQUERY的不同谓词,但没有一个有效,关于SUBQUERY的文档非常差,我遗漏了一些东西,可能问题是我想收到一个与源非常不同的对象。
当然我能够获得那个列举的结构,我想知道是否有更短的解决方案
Dave DeLong link to SUBQUERY explanation的回答给了我很多关于SUBQUERY的提示,但是我无法找到解决问题的方法。
有人可以给我一些提示吗?
答案 0 :(得分:1)
你不能用谓词来做这件事。 (好吧,你可能,但它会很愚蠢,很难理解和维护,最后你自己编写代码会更容易)
NSPredicate
用于从现有集合中提取数据子集。它只会*进行过滤,因为谓词只是一个计算结果为true或false的语句。如果你有一个集合并且过滤它带有谓词,那么会发生什么是集合开始迭代它的元素并询问谓词:“这会通过你的测试吗?” “这通过了你的考试吗?” “这会通过你的测试吗?”......每当谓词回答“是的,这通过我的测试”时,该集合将该对象添加到新集合中。这是从过滤方法返回的新集合。
<强>将强>:
NSPredicate
不(轻松)允许合并两组数据(这就是你要求的)。这是可能的(因为你可以使用FUNCTION()
表达式做任何事情),但这会导致本身不可读的谓词。
<强> SO 强>:
请勿使用NSPredicate
合并数据集。自己动手。