在索引处编辑NSMutable数组

时间:2012-05-01 04:24:04

标签: objective-c ios nsmutablearray

我想读取存储在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>

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

感谢指点。 用户

1 个答案:

答案 0 :(得分: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开头的。