我有一個自定義對象的數組列表。每個對象都包含一個我需要提取的值,即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");
}
}
感謝您搜索零的提示,它有幫助。另外,我從來沒有使用過NSSet,也不確定它的用途,但我會研究它,謝謝! – Padin215