2017-06-13 39 views
0

我正在从Dictionary获取数据。它运作良好,并将数据存储在NSMutableArray中我希望在将对象添加到需要之前确保Array不包含具有相同名称和类型的同一对象。请看下面。如何在添加新值之前检查数组是否具有相同的对象值

在插入对象之前,如果不需要插入,我们应该检查它是否包含Type和Name对象。

NSArray *resultDic = [result1 objectForKey:@"results"]; 

for (int i = 0; i<[resultDic count]; i++) { 
    id item = [resultDic objectAtIndex:i]; 

    NSDictionary *jsonDict = (NSDictionary *) item; 
    GetData *theObject =[[GetData alloc] init]; 

    NSString*error = [jsonDict valueForKey:@"error"]; 
    if(![error isEqualToString:@"No Record Found."]) 
    { 



     [theObject setVaccineID:[jsonDict valueForKey:@"ID"]]; 
     [theObject setVaccineName:[jsonDict valueForKey:@"Name"]]; 
     [theObject setVaccinationType:[jsonDict valueForKey:@"Type"]]; 
     [theObject setVaccineType:[jsonDict valueForKey:@"VType"]]; 
     [theObject setFarmName:[jsonDict valueForKey:@"FName"]]; 
     [theObject setDay:[jsonDict valueForKey:@"Day"]]; 
     [theObject setAddedDateTime:[jsonDict valueForKey:@"DateTime"]]; 



     [appDelegate.dataArray addObject:theObject]; 



    } 
} 
+0

答案>> https://stackoverflow.com/questions/10387582/checking-an-array-if-it-contains-an-object-by-a-specific-property-objective-c –

+0

您可以通过使用containsObject.Check进行检查,下面的链接可能对您有用https://stackoverflow.com/a/6299064/5184217 –

回答

1

一个通用的解决方案是教你的GetData对象如何比较自己和他人。如果可以比较它们,那么可以很容易地确定匹配是否在任何集合中(并且您可能还想在其他上下文中进行比较)。通过执行isEqual:来完成此操作。这可能是这个样子:

// in GetData.m 
- (BOOL)isEqual:(id)object { 
    if ([object isKindOfClass:[GetData self]]) { 
     // assuming that the object is fully characterized by it's ID 
     return [self.vaccineId isEqual:((GetData *)object).vaccineId]; 
    } 
    else { 
     return NO; 
    } 
} 

// have the hash value operate on the same characteristics as isEqual 
- (NSUInteger)hash { 
    return [self.vaccineId hash]; 
} 

做完这些后,你可以利用NSArray的containsObject:的。类似

// ... 
if(![appDelegate.dataArray containsObject:theObject] && ![error isEqualToString:@"No Record Found."]) 
// ... 
相关问题