私はステッパーを持っています。その値の変更中に、値をplistに保存する必要があります。
したがって、saveAppPlist メソッドに従って、変更されたファイルで NSMutableDictionary を渡す必要があります -> dictData
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:dictData format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
if(plistData)
{
[plistData writeToFile:plistPath atomically:YES];
}
ステッパーのメソッドは次のとおりです。
-(void)changeItemQuantityAtRow:(int)row
toValue:(double)value
{
NSMutableDictionary *item = [[items objectAtIndex:row] mutableCopy];
[item setObject:[NSNumber numberWithDouble:value] forKey:@"Quantity"];
[items setObject:item atIndexedSubscript:row];
NSLog(@"%@", items);
NSMutableDictionary *plistDict = [NSDictionary dictionaryWithObjects:items forKeys:[NSArray arrayWithObjects:@"Name", @"Price", @"Quantity", nil]];
NSLog(@"%@", plistDict);
[self saveAppPlist:plistDict];
}
plist は次のようになります (これは 4 つの項目のうちの 1 つにすぎません)。
<dict>
<key>Items</key>
<array>
<dict>
<key>Name</key>
<string>The zero item</string>
<key>Price</key>
<integer>133</integer>
<key>Quantity</key>
<integer>17</integer>
</dict>
ステッパーがアイテムの数量を変更しています。しかし、数量の値を変更しようとすると、次のようなエラーが発生します。
'NSInvalidArgumentException', reason: '*** -[NSDictionary initWithObjects:forKeys:]: count of objects (4) differs from count of keys (3)'
エラーの原因はわかりましたが、この問題を解決する方法がわかりません。誰が私を助けることができます?もう 1 つ - ステッパーをタップするたびに値を保存するのはあまり良くないのでしょうか?