[英]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.