user2324946
user2324946

Reputation:

NSMutableArray in NSUserDefault, retrieve NULL

In my class first controller i have:

UITextField * title = textfields [0];
NSString *html = [self.webView stringByEvaluatingJavaScriptFromString:
                  @"document.body.innerHTML"];

InfoHtml * newFeed = [[InfoHtml alloc] init];
NewFeed.title = title.text;
NewFeed.html = html;
                           
[self.arrayHTML addObject: newFeed];
                
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];[UserDefaults setObject: self.arrayHTML forKey: @ "test"];
[UserDefaults synchronize];

where arrayHTML is a NSMutableArray and InfoHtml is a class model:

@interface InfoHtml : NSObject <NSCoding>
@property (nonatomic,strong) NSString *title;
@property (nonatomic,strong) NSString *html;
@end

In my other controlller, i try to retrieve this array with:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
self.arrayHTML = [userDefaults objectForKey:@"test"];
NSLog(@"%@", self.arrayHTML);

NSLog prints: (null)

Why?

Upvotes: 1

Views: 51

Answers (2)

Kylin.Zhang
Kylin.Zhang

Reputation: 113

Frist , make sure that U have already performed NSCoding delegate in InfoHtml class , and implement - (id)initWithCoder:(NSCoder *)decoder - (void)encodeWithCoder:(NSCoder *)encodermethods

Upvotes: 0

Pedro Pinho
Pedro Pinho

Reputation: 662

Did you alloc self.arrayHTML anywhere? Can't see it on your code, so maybe you need to alloc it before adding objects.

self.arrayHTML = [[NSMutableArray alloc]init];

or

self.arrayHTML = [NSMutableArray new];

After all it was a lifecycle problem overlapping self.arrayHTML

Upvotes: 1

Related Questions