从plist中的一组元素中获取唯一的元素



我有一个包含多个数组的plist字典。我将在我的应用程序中定期从plist获取数据。这些数据存储在数组中。现在我想要的是每次当我从任何数组中选择一个元素或条目时,我必须确保元素直到现在还没有被选择或使用

那么,有没有可行的解决方案来完成这个任务呢?

这里,

NSArray *tempArray=[[NSArray alloc] init];
for(NSString *strX in plistArray){
int index=[arrayOld indexOfObject:strX];
if(index==NSNotFound){
   [tempArray addObject:strX];
}
}

//Temp Array将有oldArray中没有的Object .

所以,NSIndexSet在内存中的快速解决方案。

static NSMutableDictionary *referenceDictionary;
static dispatch_once_t onceToken;
-(BOOL)canSelectElement:(id)obj fromArray:(NSString*)arrayKey
{
    dispatch_once(&onceToken, ^{
        referenceDictionary = [@{} mutableCopy];
    });
    // simulating a plist dic. Use your real plist dic.
    NSDictionary *infoDictionary = @{@"NSAppKeyExample1":@[@"A", @"B"], @"UIAppKeyExample2":@[@"C", @"D"]};
    if (referenceDictionary[arrayKey] == nil)
        referenceDictionary[arrayKey] = [NSMutableIndexSet indexSet];
    NSArray *array = infoDictionary[arrayKey];
    NSUInteger index = [array indexOfObject:obj];
    if ([referenceDictionary[arrayKey] containsIndex:index])
        return NO;
    [referenceDictionary[arrayKey] addIndex:index];
    return YES;
}

如果你需要在应用程序关闭时保持持久化,将referenceDictionary存储在NSUserDefaults中,而不是静态变量

最新更新