2011-09-07 45 views
0

我有兩個views.In一種觀點認爲,當我點擊它進入第二視圖自定義按鈕,住在我的文本視圖和數據必須在temperary內存存儲,所以我用下面的代碼:問題NSUserDefaults的

NSString *myString=txtvNote.text; 
[txtvNote setText:@""]; 

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 

if (standardUserDefaults) { 
    [standardUserDefaults setObject:myString forKey:@"note"]; 
    [standardUserDefaults synchronize]; 
} 

,當我回去的第一視圖,通過點擊添加按鈕將保存到數據庫中,我用下面的代碼:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
NSString *val = nil; 

if (standardUserDefaults) 
    val = [standardUserDefaults objectForKey:@"note"]; 
NSLog(@"Note::%@",val); 

,然後傳中插入查詢此值。 現在我的問題是,當我把這個值留空時,它需要之前插入的值。

+0

請解釋:「當我將該值留空時」。何時何地? – zaph

回答

1

myString是一個指向txtvNote文本。所以,如果你將該文本設置爲@「」,那麼myString也將爲空。爲了在轉讓時保持txtvNote的價值使用copy或保存後重置Text:

NSString *myString=[[txtvNote.text copy] autorelease]; 
[txtvNote setText:@""]; 
.... 
2

順序必須是這樣的

//第一組文本的東西

[txtvNote setText:@""]; 

//然後使用該文本

NSString *myString=txtvNote.text; 
1

這就是NSUserDefaults的工作方式 - 每個值存儲在應用程序的喜好,像的OBJ任何其他集合-C,它不需要nil值。使用NSNull類或空字符串的實例。或者甚至更好 - 使用中間控制器存儲值並在第一個視圖中使用鍵值觀察。