2011-09-28 89 views
0

我有一個自定義對象的數組列表。每個對象都包含一個我需要提取的值,即claimNO,但不是唯一的值,也就是說5個對象可能具有相同的claimNO。從自定義對象數組中提取唯一值

我需要做的是使一個數組只有唯一的聲明號。我需要在選取器中顯示它,並且不能有任何重複的聲明號。

我的對象:

@interface ClaimCenterClaim : NSObject 
{ 
    NSNumber *claimID; 
    NSString *claimNO; 
    NSNumber *coid; 
    NSString *eventDates; 
} 

@property (nonatomic, retain) NSNumber *claimID; 
@property (nonatomic, retain) NSString *claimNO; 
@property (nonatomic, retain) NSNumber *coid; 
@property (nonatomic, retain) NSString *eventDates; 

@end 

對我來說,這應該工作:

  NSMutableDictionary *ClaimCenterClaimNOList = [[NSMutableDictionary alloc] init]; 

      int count01 = [sortedClaimList count]; 
      for (int i = 0; i < count01; i++) 
      { 
       claimCenterClaim = [sortedClaimList objectAtIndex:i]; 

       if ([ClaimCenterClaimNOList objectForKey:claimCenterClaim.claimID] != claimCenterClaim.claimNO) 
       { 
        NSLog(@"entered the bloody loop"); 
        [ClaimCenterClaimNOList setObject:claimCenterClaim.claimNO forKey:claimCenterClaim.claimID]; 
       } 
       else 
        NSLog(@"did not add value"); 
      } 

但我對價值 「[ClaimCenterClaimNOList objectForKey:claimCenterClaim.claimID]」 if語句之後總是空,直到。

如果我有claimID值,我不能檢查字典中的鍵值是否已經存在,如果不存在,請添加它?

我想避免需要迭代通過ClaimCenterClaimNOList字典(在循環中創建一個循環)。但我知道鑰匙,我不知道鑰匙是否已經存在於字典中了嗎?

編輯:不正確的邏輯

我ClaimID的值是唯一的,所以我檢查我的字典裏,如果一個ClaimID的已添加到字典中。由於claimID是唯一的,它從來沒有找到匹配。我切換搜索周圍,現在正在工作。這裏是正確的代碼:

   int count01 = [sortedClaimList count]; 
      for (int i = 0; i < count01; i++) 
      {      
       claimCenterClaim = [sortedClaimList objectAtIndex:i]; 

       NSLog(@"lets see before: claimCenterClaim.claimiD: %@ the object: %@",claimCenterClaim.claimID, [ClaimCenterClaimNOList objectForKey:claimCenterClaim.claimID]); 

       if ([ClaimCenterClaimNOList objectForKey:claimCenterClaim.claimNO] == nil) 
       { 
        NSLog(@"not in the dictionary"); 
        [ClaimCenterClaimNOList setObject:claimCenterClaim.claimID forKey:claimCenterClaim.claimNO]; 
       } 
       else 
       { 
        NSLog(@"it works, it is in the dictionary"); 
       } 
      } 

回答

0

幾個百分點,對於objectForKey,檢查nil確定缺席的關鍵。

此外,您可以將索賠數組放入NSSet,似乎更接近所需的行爲。但我不確定,如果您只想訪問任何給定索賠編號的一項或全部索賠。

我認爲明智的設計可以發揮作用,但是請概括您的理賠類以包含任何給定理賠號的所有理賠。保留字典和索賠號碼密鑰將訪問附加到唯一索賠號碼的所有索賠。

+0

感謝您搜索零的提示,它有幫助。另外,我從來沒有使用過NSSet,也不確定它的用途,但我會研究它,謝謝! – Padin215