0

我想读取存储在 PLIST 中的数组,修改元素,然后将其存储回 PLIST。

我的简单代码如下:

NSArray *mathScoreArray;
NSNumber *score1 = [NSNumber numberWithInteger:score];
NSMutableArray *scoreArray1 = [[NSArray arrayWithArray:mathScoreArray] init];
[scoreArray1 replaceObjectAtIndex:4 withObject:score1];
[dictionary setObject:scoreArray1 forKey :@"mathScoreArray"];
[dictionary writeToFile:finalPath atomically:YES];

我收到用于修改数组的“replaceObjectAtIndex”错误。我怎样才能做到这一点??

仅供参考,我的 plist 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>mathQues</key>
    <integer>1</integer>
    <key>mathScore</key>
    <integer>0</integer>
    <key>mathScoreArray</key>
    <array>
        <integer>10</integer>
        <integer>20</integer>
        <integer>30</integer>
        <integer>40</integer>
        <integer>50</integer>
    </array>
</dict>
</plist>

扩展问题,最终我想将数组向右移动一个位置并在顶部存储一个新的传入值[就像堆栈一样]。

感谢指点。用户

4

1 回答 1

3

更改此行:

    NSMutableArray *scoreArray1 = [[NSArray arrayWithArray:mathScoreArray] init];
// you need NSMutableArray, not NSArray ^
//                           you already got an array, no need to initialize ^

到:

    NSMutableArray *scoreArray1 = [NSMutableArray arrayWithArray:mathScoreArray];

此外,在您的代码中,没有迹象表明您是如何阅读的NSArray

于 2012-05-01T04:25:28.290 回答