ios - 尝试在 iOS 中显示表格内容时无法从 NSUserDefaults 加载数据
<p><p>我有一个 iOS 应用程序,在没有 WiFi 或数据连接的情况下,它会将两个 <code>NSMutableArray</code> 作为对象存储在 <code>NSUserDefaults</code> 中。在随后的访问中,用户应该能够通过从 <code>NSUserDefaults</code> 检索保存的数据来将存储的数据加载到他们的表中,但不幸的是我无法这样做。 <code>NSMutableArrays</code> 正在存储将各种 <code>NSString</code> 值作为参数保存的对象。</p>
<p>这是将我的数据保存在我的 Singleton 类中的代码:</p>
<pre><code>NSUserDefaults *defaults = ;
.testResultList forKey:@"resultTable"];
.testResults forKey:@"jsonTable"];
;
</code></pre>
<p>这是来自 <code>UITableView</code> 类的代码,它应该检索数据并将它们加载到表中:</p>
<pre><code>- (void)viewDidLoad
{
;
NSUserDefaults *defaults = ;
if ([.testResults count] == 0) {
if ( == nil) {
return;
}
else {
.testResultList = ;
.testResults = ;
}
}
}
</code></pre>
<p>这是我的 <code>cellForRowAtIndexPath()</code> 方法:</p>
<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"testresultcell";
ResultTableViewCell *cell = (ResultTableViewCell *);
if (cell == nil) {
cell = [ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
TestResult *tResult = [.testResultList objectAtIndex:indexPath.row];
cell.name.text = tResult.testTitle;
cell.date.text = tResult.dateStamp;
cell.score.text = [ getScore:tResult.score];
cell.imgView.image = getImg:tResult.score]];
return cell;
}
</code></pre>
<p>谁能看到我做错了什么?我最初检查 <code>NSMutableArray</code> 的当前值是否为空。只有这样我才会去检查是否存在 <code>NSMutableArray</code> 的保存副本。如果是这样,那么我需要加载数组并在我的表格中显示内容。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>执行此操作的典型模式如下(我通常在我的 ApplicationDelegate 中执行此操作):</p>
<pre><code>// Set up some default values
NSDictionary *myDefaults = @{@"aStringDefaultKey":@"someString",@"aBoolKey":@YES};
// Register the default values
[ registerDefaults:myDefaults];
// Get a reference to them
NSUserDefaults *userSettings = ;
</code></pre>
<p>我看不到您在哪里使用 NSUserDefaults 注册了默认值。如果您不这样做,则在没有先前设置的值的情况下,它们将不会作为默认值提供。</p>
<p>然后您可以引用该值或使用以下方式设置该值:</p>
<pre><code>// Set a value or update a value
;
;
</code></pre>
<p><strong>编辑:</strong> 如果事实证明您的 DataModel 对象(您没有为其发布任何代码)因为不符合 NSCopy 规则而无法存储,则将其序列化为 NSData可以存储在 NSDictionary 中的对象,并以这种方式进行。</p></p>
<p style="font-size: 20px;">关于ios - 尝试在 iOS 中显示表格内容时无法从 NSUserDefaults 加载数据,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/14106315/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/14106315/
</a>
</p>
页:
[1]