我有一本包含多个数组的 plist 字典。
我将定期在应用程序中从plist提取数据。
此数据存储在数组中。
现在,我想要的是每次从任何数组中选择一个元素或条目时,我都必须确保到目前为止尚未选择或使用元素

因此,有没有可能或可行的解决方案来执行此任务。

最佳答案

因此,使用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中,而不要存储在静态var中。

07-24 09:20