在数组中将值设置为零

时间:2011-11-16 23:11:52

标签: iphone objective-c ios xcode

在我的应用程序中,我使用以下代码将数组的值设置为零:

 [[records objectAtIndex:prizenotify] setValue:nil forKey:@"marbles"];
    NSError *error;
    [_managedObjectContext save:&error]; //Save 

但是,它崩溃了我的代码。我正确编码吗?弹珠是一个NSNumber。

谢谢!

4 个答案:

答案 0 :(得分:2)

[[records objectAtIndex:prizenotify] setValue:[NSNumber numberWithInteger:0] forKey:@"marbles"];

或者在现代Objective-C中:

[records[prizenotify] setValue:@0 forKey:@"marbles"];

答案 1 :(得分:0)

如果您要设置nil-esque值,可以使用[NSNull null]将null / nil值插入到NSArray等集合类中。

答案 2 :(得分:0)

确保[records objectAtIndex:prizenotify]对象是NSMutableDictionary。

可以肯定的是,测试:

[[((NSDictionary*)[records objectAtIndex:prizenotify]) mutableCopy] setValue:[NSNumber numberWithInteger:0] forKey:@"marbles"];

如果这个有效,问题是你只有一个NSDictionary(不可变)。

如果你有一个NSMutableDictionary肯定:

  • 如果要将值设置为零,请调用:

    [[records objectAtIndex:prizenotify] setValue:[NSNumber numberWithInteger:0] forKey:@“marbles”];

  • 如果要从字典中删除“弹珠”键,请调用:

    [[records objectAtIndex:prizenotify] removeObjectForKey:@“marbles”];

答案 3 :(得分:0)

虽然我会选择Sean的解决方案([NSNull null])作为最简单的解决方案,但也有NSPointerArray类(它专门回答了你的问题)。这是概述:

  

NSPointerArray是一个以NSArray为模型的可变集合,但它   也可以保存NULL值,可以插入或提取(和   这有助于对象的计数)。而且,与传统不同   数组,您可以直接设置数组的计数。在垃圾中   收集环境,如果指定归零弱内存   配置,如果收集了一个元素,它将被NULL替换   值。