将tableview中的数据存储到NSUserDefaults

时间:2013-11-11 14:45:33

标签: ios objective-c uitableview nsuserdefaults

Tricks.h文件

#import "Tricks.h"

@implementation Tricks

static NSMutableArray *trickList = nil;

+(NSMutableArray *)trickList
{
    if(!trickList){
        trickList = [[NSMutableArray alloc]init];

    }
    return trickList;
}

@end

Tricks.m文件

@interface Tricks : NSObject

@property(strong, nonatomic) NSString *trickName;

将对象添加到数组

的方法
-(IBAction)saveAction:(id)sender
{

    Tricks *trick = [[Tricks alloc]init];
    trick.trickName = self.trickLabel.text;
    [[Tricks trickList]insertObject:trick atIndex:0];
    [self.navigationController popViewControllerAnimated:YES];
}

在UITabelview类的.h文件中我正在引用tricks类,但我确信这行有错误。

@property (strong, nonatomic) Tricks *tricks;

在cellForRow方法中,我存储数据

_trick = [[NSMutableDictionary alloc]initWithObjectsAndKeys:trick,nil];
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:_trick forKey:@"numberArray"];
[defaults synchronize];
NSLog(@"%@",_trick);

在viewDidLoad中的.m类UITableview我想检索数据

if([[NSUserDefaults standardUserDefaults] objectForKey:@"numberArray"] != nil) {
        _tricks = [[NSUserDefaults standardUserDefaults] objectForKey:@"numberArray"];

    }

2 个答案:

答案 0 :(得分:1)

你正在丢失所有数据,因为你试图保存那些NSObject的技巧并在你的应用程序被杀时被销毁,它在应用程序运行时有效并且你创建了NSUserDefaults更好的数据不要将其保存为Tricks对象,而是将数据存储为NSDictionary或NSUserDefaults可以存储的NSString,并且当您想要使用它时,可以使用Trick对象创建您保存的NSDictionary数据。

修改 只能使用NSUserDefaults存储NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary

答案 1 :(得分:0)

Tricks添加一个方法,该方法返回NSUserDefaults可以存档的对象以及将从该对象恢复的方法。好的候选对象是NSArrayNSDictionary

或许更好,对Tricks了解不多,添加方法Tricks以使用上述对象保存并恢复到NSUserDefaults

如果Tricks有大量信息,请考虑NSCoding并保存并恢复到应用Documents目录中的文件。