NSUserDefault 中的 NSMutableArray,检索 NULL
NSMutableArray in NSUserDefault, retrieve NULL
在我的 class 第一个控制器中,我有:
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 是一个 class 模型:
@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 prints: (null)
为什么?
你有没有在任何地方分配self.arrayHTML?在您的代码中看不到它,因此您可能需要在添加对象之前对其进行分配。
self.arrayHTML = [[NSMutableArray alloc]init];
或
self.arrayHTML = [NSMutableArray new];
毕竟这是一个重叠的生命周期问题self.arrayHTML
首先,确保你已经在 InfoHtml class 中执行了 NSCoding 委托,并实现了 - (id)initWithCoder:(NSCoder *)decoder
- (void)encodeWithCoder:(NSCoder *)encoder
methods
在我的 class 第一个控制器中,我有:
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 是一个 class 模型:
@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 prints: (null)
为什么?
你有没有在任何地方分配self.arrayHTML?在您的代码中看不到它,因此您可能需要在添加对象之前对其进行分配。
self.arrayHTML = [[NSMutableArray alloc]init];
或
self.arrayHTML = [NSMutableArray new];
毕竟这是一个重叠的生命周期问题self.arrayHTML
首先,确保你已经在 InfoHtml class 中执行了 NSCoding 委托,并实现了 - (id)initWithCoder:(NSCoder *)decoder
- (void)encodeWithCoder:(NSCoder *)encoder
methods