在我的应用中,
我在该阵列中有一个数组filterimage,其中有一些图像。 我想在另一个视图上使用该数组数据。
我尝试使用此代码为filterimage设置nsuserdefault。
NSUserDefaults *userPrefs = [NSUserDefaults standardUserDefaults];
userPrefs setObject:filterimage forKey:@"FILTERIMAGE"];
使用此代码我尝试在另一页上获取filterimage数组数据。
FBImage = [[NSUserDefaults standardUserDefaults] valueForKey:@"FILTERIMAGE"];
FBImage是Array。
但在FBImage中获取null。
当我在我设置用户默认值的地方打印数据时,它会这样给出。
-[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
"<null>",
"<null>",
"http://external.ak.fbcdn.net/safe_image.php?d=AQD44bnA250GMrV2&w=90&h=90&url=http%3A%2F%2Fwww.djmag.com%2Fimages%2Ftop100djs%2F2011header.jpg",
"http://external.ak.fbcdn.net/safe_image.php?d=AQD44bnA250GMrV2&w=90&h=90&url=http%3A%2F%2Fwww.djmag.com%2Fimages%2Ftop100djs%2F2011header.jpg",
"http://external.ak.fbcdn.net/safe_image.php?d=AQD44bnA250GMrV2&w=90&h=90&url=http%3A%2F%2Fwww.djmag.com%2Fimages%2Ftop100djs%2F2011header.jpg",
"<null>",
"<null>",
"<null>",
"<null>",
"<null>"
)' of class '__NSArrayM'
是这个问题,因为我会在过滤器数组中得到空值吗?
答案 0 :(得分:1)
我认为它不能解决您的所有问题,但不要忘记在更改后同步您的userDefaults:
[userPrefs synchronize];
答案 1 :(得分:1)
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"FILTERIMAGE"]==nil)
{
[[NSUserDefaults standardUserDefaults] setObject:filterimage forKey:@"FILTERIMAGE"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
then you can get where your want using entire application
FBImage = [[NSUserDefaults standardUserDefaults] valueForKey:@"FILTERIMAGE"];
答案 2 :(得分:0)
NSUserDefaults只能包含几种数据类型:BOOL, double, float, NSInteger, NSNumber, NSData, NSString, NSDate, NSArray, NSDictionary, NSURL
。对于其他数据类型,然后转换为NSData或NSString。
请注意,许多其他数据类型的转换方法/函数可以转换为NSStrings,包括NSStringFromCGAffineTransform, NSStringFromCGPoint, NSStringFromCGRect, NSStringFromCGSize, NSStringFromRange, NSStringFromUIEdgeInsets, NSStringFromUIOffset
及其对应的NSStrings,以便从NSString
表示重新创建数据类型。