仅在目标C中本地更新全局变量值

时间:2015-07-06 10:29:23

标签: ios objective-c cocoa cocoa-touch parse-platform

我的应用程序中有一个公共数据,在某些视图中我只能在此视图中更新这些值。
所以我在这个视图中创建了一个局部变量,然后我将这些变量的值设置为等于全局变量,最后我更新了这些全局变量。这是我的代码:

 if (_isCitySelector){
     _dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] stateArray]];
     _subDataArray = [[NSMutableDictionary alloc] initWithDictionary:[[Commun sharedInstance] cityDictionary]];
 } else {
     _dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] categoriesArray]];
     _subDataArray = [[NSMutableDictionary alloc] initWithDictionary:[[Commun sharedInstance] subCategoriesDictionary]];
 }
if (_activateParentSelection){
    for (PFObject *object in _dataArray) {
        NSMutableArray *tempArray = (NSMutableArray *)[_subDataArray valueForKey:object.objectId];
        if ([[tempArray objectAtIndex:0][@"titre"] isEqualToString: @"الكل"])
            continue;

        PFObject *tempObject = [PFObject objectWithClassName:[object parseClassName]];
        tempObject[@"titre"] = @"الكل";
        if (object[@"nbrAnnonce"]){
            tempObject[@"categorie_id"] = object;
            tempObject[@"nbrAnnonce"] = @0;
        }else
            tempObject[@"region_id"] = object;

        [tempArray insertObject:tempObject atIndex:0];
        [_subDataArray setObject:tempArray forKey:object.objectId];
    }
}

这段代码工作正常,但问题是这还会更新全局变量吗?我的代码有什么问题!

更新 我无法使用copyWithZone因为我的数据类型是PFObject而parse.com对象不支持此功能

1 个答案:

答案 0 :(得分:0)

你应该为数组尝试这个init方法:

NSArray *dataArray = [[NSMutableArray alloc] initWithArray:[[Commun sharedInstance] stateArray] copyItems:YES];

这将创建数据的单独副本。