"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",URLs:assets-library://asset/asset.JPG?ID=77AC7205-68E6-4062-B80C-FC288DF96F24&ext=JPG
我无法在NSUserDefaults中保存NSMutableArray,因为它有错误请注意,属性列表中的字典和数组也必须只包含属性值.
我想用这个:
- (voID)encodeWithCoder:(NSCoder *)encoder { //Encode propertIEs,other class variables,etc [encoder encodeObject:self.selectedPhotos forKey:@"selectedPhotos"]; } - (ID)initWithCoder:(NSCoder *)decoder { if((self = [super init])) { //decode propertIEs,other class vars self.selectedPhotos = [decoder decodeObjectForKey:@"selectedPhotos"]; } return self; }
然后使用以下代码保存并检索它:
- (voID)saveCustomObject:(MyCustomObject *)obj { NSData *myEncodedobject = [NSKeyedArchiver archivedDataWithRootObject:obj]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setobject:myEncodedobject forKey:@"myEncodedobjectKey"]; } - (MyCustomObject *)loadCustomObjectWithKey:(Nsstring *)key { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSData *myEncodedobject = [defaults objectForKey:key]; MyCustomObject *obj = (MyCustomObject *)[NSKeyedUnarchiver unarchiveObjectWithData: myEncodedobject]; return obj; }
但我不知何故得到它,仍然在我的代码崩溃.不知道怎么做.我无法将其保存在NSUserDefaults中.希望有人帮忙.真的有这个问题了一段时间.希望有人引导我走正确的路径,从NSUserDefaults以正确的方式保存和检索它.然后回到NSMutableArray.
解决方法 NSUserDefaults仅将一组受限制的类作为对象.请参阅 documentation.您必须注意在字典中存储这些类型的值(NSData,Nsstring,NSNumber,NSDate,NSArray或NSDictionary,当然它还是递归应用).要将URL存储在NSUserDefaults中,请将它们存储为字符串,然后将其作为URL读回.如果您需要使用当前格式的字典,则可能必须在保存之前对其进行转换.
- (voID) saveMyUrls{ NSMutableArray* urls = [NSMutableArray arrayWithCapacity:self.myUrls.count]; for(NSURL* url in self.myUrls) { [urls addobject:[url absoluteString]]; } [[NSUserDefaults standardUserDefaults] setobject:urls forKey:@"myUrls"];}- (voID) loadUrls{ NSArray* urls = [[NSUserDefaults standardUserDefaults] objectForKey:@"myUrls"]; self.myUrls = [NSMutableArray arrayWithCapacity:urls.count]; for(Nsstring* urlString in urls) { [self.myUrls addobject:[NSURL URLWithString:urlString]]; } [[NSUserDefaults standardUserDefaults] setobject:urls forKey:@"myUrls"];}
如果您需要保存更多信息而不仅仅是URL,让我们说一个用户指定的标签,您可以将对象保存为NSDictionary,例如
- (voID) saveMyUrlsWithLabels{ NSMutableArray* obJs = [NSMutableArray arrayWithCapacity:self.myObjects.count]; for(MyObject* obj in self.myObjects) { [obJs addobject:[NSDictionary dictionaryWithKeys:@"url",@"label" forObjects:obj.url.absoluteString,obj.userSpecifIEdLabel]; } [[NSUserDefaults standardUserDefaults] setobject:obJs forKey:@"myObjects"];}总结
以上是内存溢出为你收集整理的iphone – 在NSUserDefaults中保存ALAsset URL全部内容,希望文章能够帮你解决iphone – 在NSUserDefaults中保存ALAsset URL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)