数据在阵列中后加载数据

时间:2013-05-22 02:53:48

标签: objective-c arrays

[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];

将数据保存在数组中后,如何在应用再次运行后上传数据?我希望数据在表格中加载一次。

2 个答案:

答案 0 :(得分:0)

第一步是从用户默认值中检索它。第二步不是放在地板上。

[viewdata1 objectForKey:@"success"];

这是一个,但不是另一个:你检索它,然后你把它放在地板上。

您需要将对象存储为属性的值(这意味着您需要为此目的声明属性),然后,在表视图的数据源中,将该数组的计数作为行数返回和数组中的对象(或这些对象的属性)作为行值。

此外,您无需在检索值后调用synchronize,尤其是

答案 1 :(得分: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];
}