Ios 如何重写St:Obj:Foundation方法(在基础框架中)
当在字典中设置nil值时,它将崩溃。 下面是代码Ios 如何重写St:Obj:Foundation方法(在基础框架中),ios,objective-c,nsmutabledictionary,Ios,Objective C,Nsmutabledictionary,当在字典中设置nil值时,它将崩溃。 下面是代码 NSMutableDictionary *dic = [@{} mutableCopy]; [dic setObject:nil forKey:@"test"]; 此代码将崩溃。那么有没有一种方法可以覆盖setObject:forKey:使其在传递nil时不会崩溃,就像这样:[dic setObject:nil-forKey:@“test”] 有人能帮我解决这个问题吗?不管怎样,你都想逃出车祸。正确的?为此,您应该在try catch块中编写代
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:nil forKey:@"test"];
此代码将崩溃。那么有没有一种方法可以覆盖setObject:forKey:使其在传递nil时不会崩溃,就像这样:[dic setObject:nil-forKey:@“test”]代码>
有人能帮我解决这个问题吗?不管怎样,你都想逃出车祸。正确的?为此,您应该在try catch块中编写代码
@try {
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:nil forKey:@"test"];
}
@catch (NSException *exception) {
NSLog(@"%@",exception.reason);
}
@finally {
}
//你可以这样做
NSNull *nullValue=[[NSNull alloc]init];//globally decalare
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:dic?dic:nullValue forKey:@"test"];
不管怎么说,你想逃离坠机。正确的?为此,您应该在try catch块中编写代码
@try {
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:nil forKey:@"test"];
}
@catch (NSException *exception) {
NSLog(@"%@",exception.reason);
}
@finally {
}
//你可以这样做
NSNull *nullValue=[[NSNull alloc]init];//globally decalare
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:dic?dic:nullValue forKey:@"test"];
不管怎么说,你想逃离坠机。正确的?为此,您应该在try catch块中编写代码
@try {
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:nil forKey:@"test"];
}
@catch (NSException *exception) {
NSLog(@"%@",exception.reason);
}
@finally {
}
//你可以这样做
NSNull *nullValue=[[NSNull alloc]init];//globally decalare
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:dic?dic:nullValue forKey:@"test"];
不管怎么说,你想逃离坠机。正确的?为此,您应该在try catch块中编写代码
@try {
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:nil forKey:@"test"];
}
@catch (NSException *exception) {
NSLog(@"%@",exception.reason);
}
@finally {
}
//你可以这样做
NSNull *nullValue=[[NSNull alloc]init];//globally decalare
NSMutableDictionary *dic = [@{} mutableCopy];
[dic setObject:dic?dic:nullValue forKey:@"test"];
从NSDictionary的文档中,您不能:
通常,键可以是任何对象(前提是它符合
NSCopying协议(见下文),但请注意,在使用键值时
对键进行编码必须是字符串(请参见键值编码基础)。
键和值都不能为零;如果需要表示null
值,则应使用NSNull
从NSDictionary的文档中,您不能:
通常,键可以是任何对象(前提是它符合
NSCopying协议(见下文),但请注意,在使用键值时
对键进行编码必须是字符串(请参见键值编码基础)。
键和值都不能为零;如果需要表示null
值,则应使用NSNull
从NSDictionary的文档中,您不能:
通常,键可以是任何对象(前提是它符合
NSCopying协议(见下文),但请注意,在使用键值时
对键进行编码必须是字符串(请参见键值编码基础)。
键和值都不能为零;如果需要表示null
值,则应使用NSNull
从NSDictionary的文档中,您不能:
通常,键可以是任何对象(前提是它符合
NSCopying协议(见下文),但请注意,在使用键值时
对键进行编码必须是字符串(请参见键值编码基础)。
键和值都不能为零;如果需要表示null
值,则应使用NSNull
如果仅使用NSString
实例作为键,则可以安全地使用NSKeyValueCoding.h
中的下一个类别:
@interface NSMutableDictionary<KeyType, ObjectType>(NSKeyValueCoding)
/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:.
*/
- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
@end
请注意,无法覆盖NSMutableDictionary
的原始setObject:forKey:
方法。通常,可以使用在类别中旋转的方法来实现这一点。但是NSMutableDictionary
实际上是类集群。NSMutableDictionary
的私有子类在幕后完成真正的工作。每个子类都有自己的setObject:forKey:
实现,因为此方法是原始方法。您可以在上阅读有关类群集的更多信息。如果您仅使用NSString
实例作为键,则可以安全地使用NSKeyValueCoding.h
中的下一个类别:
@interface NSMutableDictionary<KeyType, ObjectType>(NSKeyValueCoding)
/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:.
*/
- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
@end
请注意,无法覆盖NSMutableDictionary
的原始setObject:forKey:
方法。通常,可以使用在类别中旋转的方法来实现这一点。但是NSMutableDictionary
实际上是类集群。NSMutableDictionary
的私有子类在幕后完成真正的工作。每个子类都有自己的setObject:forKey:
实现,因为此方法是原始方法。您可以在上阅读有关类群集的更多信息。如果您仅使用NSString
实例作为键,则可以安全地使用NSKeyValueCoding.h
中的下一个类别:
@interface NSMutableDictionary<KeyType, ObjectType>(NSKeyValueCoding)
/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:.
*/
- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
@end
请注意,无法覆盖NSMutableDictionary
的原始setObject:forKey:
方法。通常,可以使用在类别中旋转的方法来实现这一点。但是NSMutableDictionary
实际上是类集群。NSMutableDictionary
的私有子类在幕后完成真正的工作。每个子类都有自己的setObject:forKey:
实现,因为此方法是原始方法。您可以在上阅读有关类群集的更多信息。如果您仅使用NSString
实例作为键,则可以安全地使用NSKeyValueCoding.h
中的下一个类别:
@interface NSMutableDictionary<KeyType, ObjectType>(NSKeyValueCoding)
/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:.
*/
- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
@end
请注意,无法覆盖NSMutableDictionary
的原始setObject:forKey:
方法。通常,可以使用在类别中旋转的方法来实现这一点。但是NSMutableDictionary
实际上是类集群。NSMutableDictionary
的私有子类在幕后完成真正的工作。每个子类都有自己的setObject:forKey:
实现,因为此方法是原始方法。您可以在上阅读有关类群集的更多信息,请尝试setValue:forKey:而不是setObject:forKey:或使用[NSNull null]而不是nil。@HardikShekhat:我可以重写此方法吗?抱歉,可能我的状态不清楚,我的意思是如何重写它?我试图按类别覆盖它,但这个系统框架的方法仍然是我的。有什么办法吗?请尝试setValue:forKey:而不是setObject:forKey:或者使用[NSNull null]而不是nil。@HardikShekhat:我可以覆盖这个方法吗?对不起,也许我的状态不清楚,我的意思是我如何重写它?我试图按类别覆盖它,但这个系统框架的方法仍然是我的。有什么办法吗?请尝试setValue:forKey:而不是setObject:forKey:或者使用[NSNull null]而不是nil。@HardikShekhat:我可以覆盖这个方法吗?对不起,也许我的状态不清楚,我的意思是我如何重写它?我尝试按类别覆盖它,但仍然