在我的应用程序中,我使用以下代码将数组的值设置为零:
[[records objectAtIndex:prizenotify] setValue:nil forKey:@"marbles"];
NSError *error;
[_managedObjectContext save:&error]; //Save
但是,它崩溃了我的代码。我正确编码吗?弹珠是一个NSNumber。
谢谢!
答案 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替换 值。