簡體   English   中英

如何使子對象搜索更簡潔?

[英]How can I make sub-object searching more terse?

我對一種簡潔的方法感興趣,可以在需要子對象級別的數組中查找匹配項。 性能不必接近理想,但應該合理。

對於這種情況, 我不想添加反向關系或管理保留的字典 我根本不想更改模型。

Object1包含一個Object2,而Object2包含一個Object3。 我知道以下方法將返回第一個匹配項,但是返回每個匹配項的解決方案也是可以接受的。

-(Object1*)getObject1ForObject3:(Object3*)object3
{
    for(Object1 *object1 in self.object1s)
        if(object1.object2.object3 == object3)
            return  object1 ;

    return nil ;
}

為了聲望,如果中間有一對多的關系,我們可以使它簡潔嗎?

-(Object1*)getObject1ForObject3:(Object3*)object3
{
    for(Object1 *object1 in self.object1s)
        for(Object2 *object2 in object1.object2s)
            if(object2.object3 == object3)
                return  object1 ;

    return nil ;
}

嗯,用於聲明NSPredicate的API並不十分簡潔 ,但它可能比您正在做的還要簡潔。

對於第一種情況,中間沒有一對多:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"object2.object3 == %@", object3];
NSArray *matchingObj1s = [self.object1s filteredArrayUsingPredicate];

當中間存在一對多關系時:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY object2s.object3 == %@", object3];
NSArray *matchingObj1s = [self.object1s filteredArrayUsingPredicate];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM