因此,我有一个类“WishListItem”,一个TableViewController和一个ViewController。我在保存数据块并从TableViewController检索数据时遇到困难吗?如何有效地做到这一点?
这是我的ViewController,它具有prepareForSegue,可将数据存储到WishListItem类。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSDate *myDate = self.targetDatePicker.date;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM d, YYYY"];
NSString *prettyVersion = [dateFormat stringFromDate:myDate];
if (sender != self.addWishListButton) return;
if (self.wishTextField.text.length > 0) {
self.wishItem = [[WishlistItem alloc] init];
self.wishItem.wishlistItem = self.wishTextField.text;
self.wishItem.descWishItem = self.descTextField.text;
self.wishItem.targetDate = prettyVersion;
}
}
WishListItem.h:
@interface WishlistItem : NSObject
@property NSString *wishlistItem;
@property NSString *descWishItem;
@property NSString *targetDate;
@end
ViewController.h:
@interface JLSViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIBarButtonItem *addWishListButton;
@property (strong, nonatomic) IBOutlet UITextField *wishTextField;
@property (strong, nonatomic) IBOutlet UITextField *descTextField;
@property (strong, nonatomic) IBOutlet UIDatePicker *targetDatePicker;
@property WishlistItem *wishItem;
@end
从这里。我想在每次添加wishItem时保存它。我将如何存储多个条目?并同时在我的TableViewController中检索这些条目?
如果需要提供更多信息,请告诉我。 TIA。
最佳答案
最简单,最粗鲁的方法是将数据存储在NSUserDefaults中
+(void)userDefaultsSetObject:(id)userObject forKey:(NSString *)userKey
{
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
[userDefaults setObject:userObject forKey:userKey];
[userDefaults synchronize];
}
/**
* This method helps to get values from NSUserDefaults
*/
+(id)userDefaultsGetObjectForKey:(NSString *)userKey
{
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
return [userDefaults objectForKey:userKey];
}
使用以上两个功能可以从NSUserDefaults保存和检索数据。因此,在这里解决您的问题,将wishlistitem对象添加到数组中,然后在NSUserDefaults中进行设置。将此代码添加到tableviewcontroller类中,并将数据源数组作为全局变量。
NSMutableArray *dataSourceArray;
在tableviewcontroller类的ViewDidLoad中添加此代码,
NSMutableArray *wishlistItems;
if([self userDefaultsGetObjectForKey:@"WishListItems"]==nil)
{
wishlistItems = [NSMutableArray array];
}
else
{
wishlistItems = [self userDefaultsGetObjectForKey:@"WishListItems"];
}
dataSourceArray = [[NSMutableArray alloc] initWithArray:wishlistItems];
然后在tableViewDelegateMethod中,尝试以下操作:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [dataSourceArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
WishlistItem *wishListObject = [dataSourceArray objectAtIndex:indexPath.row];
[cell.textLabel setText:wishListObject.wishlistItem];
[cell.detailTextLabel setText:wishListObject.descWishItem];
return cell;
}
因此,每次添加内容时,
- (NSMutableArray*)wishListAdded:(WishlistItem*)wishList
{
NSMutableArray *wishlistItems;
if([self userDefaultsGetObjectForKey:@"WishListItems"]==nil)
{
wishlistItems = [NSMutableArray array];
[wishlistItems addObject: wishItem];
[self userDefaultsSetObject:wishlistItems forKey:@"WishListItems"];
}
else
{
wishlistItems = [self userDefaultsGetObjectForKey:@"WishListItems"];
[wishlistItems addObject:yourWishListObject];
[self userDefaultsSetObject:wishlistItems forKey:@"WishListItems"];
}
return wishlistItems;
}
关于ios - 应用重新运行时,如何保存ViewController中的数据并将其加载到TableViewController中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23510404/