2013-03-26 90 views
0

我有一个在表视图中存储数据的问题。表视图不存储数据

这是一个菜单的应用程序,它会弹出一个表格视图,并显示他们所订购的所有菜肴,我使用NSMutableArray来存储数据,但是每当我关闭表视图时,表中的数据将被重置为初始状态,即空表。

我该怎么做才能解决这个问题,谢谢任何帮助!

我使用FPPopover库显示在表视图弹出,下面的代码:

- (IBAction)revealOrderList:(id)sender 
{ 
    SAFE_ARC_RELEASE(popover); popover=nil; 

    OrderListViewController *controller = [[OrderListViewController alloc] initWithStyle:UITableViewStylePlain]; 
    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:controller]; 
    SAFE_ARC_RELEASE(controller); controller=nil; 

    popover = [[FPPopoverController alloc] initWithViewController:nc]; 
    popover.tint = FPPopoverDefaultTint; 
    popover.contentSize = CGSizeMake(300, 500); 
    [popover presentPopoverFromView:sender]; 
} 

,并在弹出过表视图:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.navigationItem.leftBarButtonItem = self.editButtonItem; 

    orderList = [[NSMutableArray alloc] initWithObjects:@"One", @"Two", @"Three", nil]; 

    //add the add button 
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)]; 
    self.navigationItem.rightBarButtonItem = addButton; 
} 

- (void)insertNewObject 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add new thing" 
               message:@"" 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"OK", nil]; 

    //Set the style of UIAlertView 
    alert.alertViewStyle = UIAlertViewStylePlainTextInput; 

    //Show the UIAlertView 
    [alert show]; 
} 
+0

添加一些代码?如果卸载视图控制器,数据将随之一起发送。 – 2013-03-26 21:49:13

+0

您的主要问题是您依赖视图或控制器来保存模型。 – sosborn 2013-03-26 22:19:43

+0

那我该怎么办? – 2013-03-26 22:36:41

回答

0

您的数据本身不存储。您可以在阵列中输入初始数据,但要保存需要核心数据的新数据或以其他方式使用NSUserDefaults将新数据保存到文件或数据库中。 Tim roadley有一套很棒的教程,它涉及核心数据链接:http://timroadley.com/tutorials-index/

这也取决于您试图保存的数据量。如果数量巨大,那么SQL数据库会更好。尝试NSUserDefaults或核心数据。但通过设置数组,您不能保存新数据。该数组将只显示通过代码输入的原始数据。另外苹果有一个非常好的保存数据的例子。尝试搜索Bird Watching的示例代码。更好的是这里的链接:http://developer.apple.com/library/IOs/ipad/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/GettingStarted/GettingStarted.html

希望这可以帮助你。

+0

谢谢,似乎它是解决它的唯一方法。 – 2013-03-27 02:32:41

+0

你很安静,欢迎我的朋友。在研究这些方法的同时,还会查找如何写入plist以及如何读取它。对于较小的项目来说它可能会很方便。快乐编码我的朋友。 – 2013-03-27 02:48:56

0

既然你说,表格视图最初会正确存储数据,我想你已经将表格视图正确连接到数据源。如果我不得不猜测数据为什么会消失,那么当你关闭表格时,你会释放它的控制器,从而释放它的数据。我建议允许初始数据在打开时传递给表的控制器。

如果情况并非如此,发布一些相关的代码可以真正帮助找到答案。