尝试保存搜索数据后,当segue返回时,iPhone应用程序崩溃

时间:2012-01-19 18:06:28

标签: ios objective-c xcode xcode-storyboard

我正在使用故事板来为建议的应用程序布局界面。我有一个按钮,它在一个表格视图控制器上,顶部有一个搜索栏控制器。我正在关注Apple关于如何进行搜索here的基本示例之一。此示例使用单个表视图控制器并保存要在后续视图中检索的搜索项数据。使用此代码保存搜索数据(我还包括对象定义):

@interface SearchTableViewController : UITableViewController {
  NSMutableArray *listOfLists;
  NSMutableArray *filteredListOfLists;
  NSString *savedSearchTerm;
  NSInteger savedScopeButtonIndex;
  BOOL searchWasActive;
}
@property (nonatomic, strong) NSMutableArray *listOfLists;
@property (nonatomic, strong) NSMutableArray *filteredListOfLists;
@property (nonatomic, copy) NSString *savedSearchTerm;
@property (nonatomic) NSInteger savedScopeButtonIndex;
@property (nonatomic) BOOL searchWasActive;
@end

- (void)viewDidDisappear:(BOOL)animated
{
  [super viewDidDisappear:animated];
  // save the state of the search UI so that it can be restored if the view is re-created
  self.searchWasActive = [self.searchDisplayController isActive];
  self.savedSearchTerm = [self.searchDisplayController.searchBar text];
  self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
}

如果我注释掉用于保存数据的三个核心行,那么一切都按预期工作(除了记住搜索对象的状态)。我认为正在发生的是视图被“破坏”作为segue的一部分(可能在调用viewDidDisappear方法之前),因此“self”不再可用。

解决此问题的正确/最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

怎么样

[[NSUserDefaults standardUserDefaults] 
   setValue:searchDisplayController.searchBar.text 
     forKey:"SavedSearchTerm"];

[[NSUserDefaults standardUserDefaults]
   valueForKey:"SavedSearchTerm"];

viewWillDisappear中执行此操作将确保对象仍在那里。