2013-05-22 39 views
0
[array addObject:textdata.text];   

NSUserDefaults *save = [NSUserDefaults standardUserDefaults]; 

[save setObject:array forKey:@"success" ]; 

[save synchronize]; 

-(void) viewDidLoad 

NSUserDefaults *viewdata1 = [NSUserDefaults standardUserDefaults]; 

[viewdata1 objectForKey:@"success"]; 

[viewdata1 synchronize]; 

[tabledata reloadData]; 

一旦數據保存在數組中,一旦應用程序再次運行,該如何上傳數據?我想要數據在表格中加載一次。一旦數據在陣列中就加載數據

+0

不要叫'synchronize'當你閱讀'NSUserDefaults'數據。更新數據時也沒有必要調用它。完全調用「synchronize」的唯一原因是確保在數據由OS自動同步之前應用程序崩潰時保存關鍵數據。 – rmaddy

回答

0

第一步是從用戶默認值中檢索它。第二步不要把它放在地板上。

[viewdata1 objectForKey:@"success"]; 

這是一個,但不是另一個:你檢索它,但你然後把它放在地板上。

您需要將對象存儲爲屬性的值(這意味着您需要爲此目的聲明屬性),然後在表視圖的數據源中將該數組的計數返回爲您的數量數組中的行和對象(或這些對象的屬性)作爲行值。

此外,您不應該在之後調用synchronize,尤其是檢索值。

+0

您是否介意在實現代碼時請示例 – user2402063

0

你應該是這樣的:

TSTableViewController.h:

@property(nonatomic, readwrite, retain) NSMutableArray* dataSource; 

TSTableViewController.m:

- (id) init 
{ 
    if ((self = [super init])) 
    { 
     [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(applicationDidEnterBackground:) 
                name: UIApplicationDidEnterBackgroundNotification 
                object: nil]; 
    } 

    return self; 
} 

- (void) applicationDidEnterBackground: (NSNotification*) notification 
{ 
    [[NSUserDefaults standardUserDefaults] setObject: self.dataSource 
               forKey: @"success" ]; 
} 

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray* array = [[NSUserDefaults standardUserDefaults] objectForKey: @"success"]; 

    if (array) 
    { 
     self.dataSource = [NSMutableArray arrayWithArray: array]; 
    } 
    else 
    { 
     self.dataSource = [[[NSMutableArray alloc] init] autorelease]; 
    } 

    [tableView reloadData]; 

} 
- (void) addDataToDataSource 
{ 
    [self.dataSource addObject: textdata.text]; 
    [tabledata reloadData]; 
} 

- (void) dealloc 
{ 
    [dataSource release]; 
    dataSource = nil; 

    [super dealloc]; 
} 
+0

,它給了我一個警告「本地聲明」數組「隱藏了實例變量,任何想法爲什麼? – user2402063

+0

您有作爲名稱數組的實例變量。其他名稱 – stosha

+0

當數據源是表視圖控制器時,將數組屬性'dataSource'命名是誤導性的,並且假定提問者的目標是iOS。 –