Ios 在NSUserDefaults中保存id类型对象

Ios 在NSUserDefaults中保存id类型对象,ios,nsuserdefaults,Ios,Nsuserdefaults,我想将id类型对象值保存在NSUserDefaults中 -(IBAction)sendOrderReady:(id)sender { NSUserDefaults *d = [NSUserDefaults standardUserDefaults]; [d setValue:sender forKey:@"sender"]; // [d setObject:sender forKey:@"sender"]; [d synchronize]; } 从NSUserDefaults类描述 NSU

我想将id类型对象值保存在NSUserDefaults中

-(IBAction)sendOrderReady:(id)sender
{
NSUserDefaults *d = [NSUserDefaults standardUserDefaults];
[d setValue:sender forKey:@"sender"];
// [d setObject:sender forKey:@"sender"];
[d synchronize];
}

从NSUserDefaults类描述


NSUserDefaults类为访问常见类型(如浮点、双精度、整数、布尔和URL)提供了方便的方法。默认对象必须是属性列表,即NSData、NSString、NSNumber、NSDate、NSArray或NSDictionary的实例(或集合实例的组合)。如果要存储任何其他类型的对象,通常应将其存档以创建NSData实例。


因此,如果您的id对象不是上述实例之一,则必须将其转换为其中一个实例,并且

使用NSUserDefaults,您可以保存以下类类型的对象:

NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary


如果要存储任何其他类型的对象,则需要将其存档或包装到NSData实例中

为什么要在NSUserDefault中保存button对象?您真正要保存的是什么?可能存在重复的
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"iPhone" forKey:@"keyToLookupString"];

// saving an NSInteger
[prefs setInteger:442 forKey:@"integerKey"];

// saving a Double
[prefs setDouble:5.15 forKey:@"doubleKey"];

// saving a Float
[prefs setFloat:123.45678 forKey:@"floatKey"];

// This is suggested to synch prefs, but it is not needed
[prefs synchronize];