简体   繁体   English

NSUserDefault中的NSMutableArray,检索NULL

[英]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: 其中arrayHTML是NSMutableArray,而InfoHtml是类模型:

@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) NSLog打印:(空)

Why? 为什么?

Did you alloc self.arrayHTML anywhere? 您是否在任何地方分配了self.arrayHTML? 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 毕竟这是一个生命周期问题,重叠了self.arrayHTML

首先,确保U已经在InfoHtml类中执行了NSCoding委托,并实现- (id)initWithCoder:(NSCoder *)decoder - (void)encodeWithCoder:(NSCoder *)encoder方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM