菜鸟教程小白 发表于 2022-12-13 16:19:32

ios - 将数据写入 .plist


                                            <p><p>我知道这个问题可能看起来与许多以前提出的问题相似,但在阅读了所有这些问题和答案后,我无法理解该怎么做。</p>

<p>我想写一些具有 <code>wordNames</code> 和 <code>wordDefinitions</code> 的单词,以及一些 <code>ID</code> 和 <code>date ID</code>。我有以下代码,但我有两个关于使用具有不同数据类型的数组的字典以及为字典定义键的方式的问题。</p>

<p>如果我制作的整个 .plist 文件有误,请纠正我。</p>

<p>提前致谢。</p>

<pre><code>- (IBAction)addWord:(id)sender
{
NSString *destinationPath = ;
destinationPath = ;

NSFileManager *fileManager = ;

if (!)
{
    NSString *sourcePath = [ pathForResource:@&#34;Box&#34; ofType:@&#34;plist&#34;];
    ;
}

// Load the Property List.
NSMutableArray* wordsInTheBox = [ initWithContentsOfFile:destinationPath];


NSString *wordName = word.name;
NSString *wordDefinition = word.definition;
NSInteger deckID;
NSDate addedDate;


//is this correct to have an array of different types?
NSArray *values = [ initWithObjects:wordName, wordDefinition, deckID, addedDate, nil];
//How and where am I supposed to define these keys?
NSArray *keys = [ initWithObjects: NAME_KEY, DEFINITION_KEY, DECK_ID_KEY, DATE_KEY, nil];
NSDictionary *dict = [ initWithObjects:values forKeys:keys];
;
;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p> <a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/instm/NSArray/initWithContentsOfFile%3a" rel="noreferrer noopener nofollow"><code>initWithContentsOfFile:</code></a>总是返回一个<strong>不可变数组</strong>。你应该这样做:</p>

<pre><code>NSMutableArray *wordsInTheBox = [ initWithArray:];
</code></pre>

<p>我不完全理解的是 <code>word</code> 变量的定义位置。是 ivar 吗?</p>

<p>如果您使用的是最新版本的 Xcode(4.4 或 4.5),我建议您使用更简单的文字来创建字典。</p>

<pre><code>NSDictionary *dict = @{NAME_KEY       : wordName,
                     DEFINITION_KEY : wordDefinition,
                     DECK_ID_KEY    : deckID,
                     DATE_KEY       : addedDate};
</code></pre>

<p>但是我也没有发现您的字典定义有问题。它应该可以工作。</p>

<p>您必须确保在某处定义了 NAME_KEY、DEFINITION_KEY 等。所有大写通常只用于预处理器宏,所以你可以这样做:</p>

<pre><code>#define NAME_KEY @&#34;Name&#34;
#define DEFINITION_KEY @&#34;Definition&#34;
</code></pre>

<p>您也可以直接在字典中使用字符串:</p>

<pre><code>NSDictionary *dict = @{@&#34;Name&#34;       : wordName,
                     @&#34;Definition&#34; : wordDefinition,
                     @&#34;DeckID&#34;   : deckID,
                     @&#34;Date&#34;       : addedDate};
</code></pre>

<p>但是使用宏也不是一个坏主意。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将数据写入 .plist,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12446842/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12446842/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将数据写入 .plist