NSUserDefault中的NSMutableArray,检索NULL

时间:2017-07-18 22:28:45

标签: ios objective-c nsuserdefaults

在我的班级第一控制器中,我有:

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];

其中arrayHTML是NSMutableArray,InfoHtml是类模型:

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

在我的另一个控制器中,我尝试使用以下命令检索此数组:

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

NSLog打印:( null)

为什么?

2 个答案:

答案 0 :(得分:2)

你有没有在任何地方分配self.arrayHTML?无法在您的代码中看到它,因此您可能需要在添加对象之前对其进行分配。

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

self.arrayHTML = [NSMutableArray new];

毕竟这是一个与self.arrayHTML重叠的生命周期问题

答案 1 :(得分:0)

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