因此,我有一个类“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/

10-13 03:47
查看更多