0

在下面的 my 和 successBlock 中,我将其保存info到我的NSMutableArray selectedPhotos. 顺便说一句,这info是一个ALAsset url. 我的相机胶卷中的 URL。

     } andSuccessBlock:^(NSArray *info) 
            [self.selectedPhotos setArray:info];

我需要做的是通过NSUserDefaults. 这是我保存它的方法NSUserDefaults

            [[NSUserDefaults standardUserDefaults] setObject:self.selectedPhotos forKey:@"PickedImage"];
            self.selectedPhotos = [[NSUserDefaults standardUserDefaults] objectForKey:@"PickedImage"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            NSLog(@"SelectedPhotos:: %@", self.selectedPhotos);

但问题是,当我记录它时,它说NULL. 如何通过NSUserDefaults. 谢谢您的帮助。

日志:

SelectedPhotos:: (null)
*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
    "ALAsset - Type:Photo, URLs:assets-library://asset/asset.JPG?id=119A0D2D-C267-4B69-A200-59890B2B0FE5&ext=JPG",
    "ALAsset - Type:Photo, URLs:assets-library://asset/asset.JPG?id=92A7A24F-D54B-496E-B250-542BBE37BE8C&ext=JPG",
    "ALAsset - Type:Photo, URLs:assets-library://asset/asset.JPG?id=77AC7205-68E6-4062-B80C-FC288DF96F24&ext=JPG" )' of class '__NSArrayM'.  Note that dictionaries and arrays in property lists must also contain only property values.
4

3 回答 3

1

看看你得到的日志:

请注意,属性列表中的字典和数组也必须只包含属性值。

AnALAsset对存储在 中无效NSUserDefaults。只有NSString, NSNumber, NSData, NSDate, NSArray, 和NSDictionary可以存储在那里。

您必须弄清楚要存储资产中的哪些数据,并将其存储起来。我怀疑 URL 是您真正有兴趣存储的全部内容,但在不知道您打算如何处理数据的情况下,我无法确定。

于 2012-10-08T02:41:26.327 回答
0

要将 NSMutableArray 保存ALAsset到 NSUserDefaults 中,您需要将其转换为 NSData 并保存。看一看:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:self.selectedPhotos];
[userDefaults setObject:arrayData forKey:@"selectedPhotos"];

要记录(和阅读)它,您需要简单地:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSData *arrayData = [defaults objectForKey:@"selectedPhotos"];
NSLog(@"%@", [NSKeyedUnarchiver unarchiveObjectWithData:data]);
于 2012-10-08T02:33:31.583 回答
0

- 存档后尝试保存(即转换为 NSData)。请查看以下答案Why NSUserDefaults failed to save NSMutableDictionary in iPhone SDK?

于 2012-10-08T05:51:16.900 回答