簡體   English   中英

將文本字段值存儲在字典中

[英]Storing text field value in a dictionary

我有添加和刪除按鈕,可在視圖中添加文本字段。 現在我想將文本字段值存儲在字典中。

-(void)addTextField{

keyTextField = [[UITextField alloc] initWithFrame:CGRectMake((((self.view.frame.size.width)*5)/100), yAxisDistance, (((self.view.frame.size.width)*40)/100),(((self.view.frame.size.height)*8)/100))];
keyTextField.borderStyle = UITextBorderStyleRoundedRect;
keyTextField.placeholder = @"Key Value";
keyTextField.delegate = self;
mKeyTag+=1;
keyTextField.tag = mKeyTag;
[self.view addSubview:keyTextField];

valueTextField = [[UITextField alloc] initWithFrame:CGRectMake((((self.view.frame.size.width)*55)/100), yAxisDistance, (((self.view.frame.size.width)*40)/100),(((self.view.frame.size.height)*8)/100))];
valueTextField.borderStyle = UITextBorderStyleRoundedRect;
valueTextField.placeholder = @"Value";
valueTextField.delegate = self;
mValueTag+=1;
valueTextField.tag = mValueTag;
[self.view addSubview:valueTextField];
yAxisDistance = yAxisDistance+(((self.view.frame.size.height)*13)/100);
}

-(void)deleteTextField{

if (mKeyTag>=1000) {
    UITextField *textField = (UITextField *)[self.view viewWithTag:mKeyTag];
    [textField removeFromSuperview];
    mKeyTag-=1;
    yAxisDistance = yAxisDistance-35;
}
if (mValueTag>=2000) {
    UITextField *textField = (UITextField *)[self.view viewWithTag:mValueTag];
    [textField removeFromSuperview];
    mValueTag-=1;
}
}

如果我單擊添加,則添加兩個文本字段,一個用於鍵值,一個用於鍵值。 但是,如果我通過單擊添加按鈕5次來添加5對文本字段,並為這些文本字段提供一些值並嘗試存儲在字典中,則它僅存儲最后一個文本字段值。 但是我想存儲在這5對文本字段中提供的所有數據。 用於存儲數據,我正在使用以下代碼

  NSMutableDictionary *Dict = [[NSMutableDictionary alloc]init];
  [Dict setValue:valueTextField.text forKey:keyTextField.text];

請幫忙,因為我是這個領域的新手。

如果您想要一個鍵具有多個值,則需要一個字典,其中該值是一個可變數組,並繼續向其中添加值。

- (void)addValue:(id)value forKey:(id<NSCopying>)key
{
    NSMutableArray *array = self.dictionary[key];
    if (array == nil)
    {
        array = [NSMutableArray array];
        self.dictionary[key] = array;
    }
    [array addObject:value];
}

您的字典鍵必須是唯一的,否則該值可能會被同一鍵的新值覆蓋。

if(!dict) { //if no instance of the dict exists, create it
    dict = [NSMutableDictionary new];
}

NSString *value = valueTextField.text; //grab your value
NSString *key = keyTextfield.text; //grab your key

//setting the value at this stage runs the risk of overwriting existing values for that key.
//[dict setValue:value forKey:key]; 

NSMutableArray *valuesForKeyArray = [NSMutableArray new]; //will hold your values for you
if ([dict valueForKey:key]) { //check if the dictionary already contains value for key

    //dictionary contains values for the key already -> grab them
    NSArray *existingValues = [NSArray arrayWithArray:[dict valueForKey:key]];
    [valuesForKeyArray addObjectsFromArray:existingValues]; //add them in
}

//add the latest value
[valuesForKeyArray addObject:value];

//save into your dictionary (either the array with existing values + new value or just the new value)
[dict setValue:valuesForKeyArray forKey:key];

您創建字典(如果尚未在其他地方創建字典),獲取您的特定鍵和值,創建一個用於保存值的數組,檢查字典是否已經為該鍵保存了一些值,如果是->您將它們添加到其中,然后將最新值添加到數組中,然后又保存回字典中。

通過這種結構,您的字典鍵將保持唯一,但它們不僅包含一個值,還包含一組值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM