菜鸟教程小白 发表于 2022-12-13 00:14:44

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:@&#34;resultTable&#34;];
    .testResults forKey:@&#34;jsonTable&#34;];
    ;
</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 = @&#34;testresultcell&#34;;
    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 = @{@&#34;aStringDefaultKey&#34;:@&#34;someString&#34;,@&#34;aBoolKey&#34;:@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]
查看完整版本: ios - 尝试在 iOS 中显示表格内容时无法从 NSUserDefaults 加载数据