NSUrl不是作为绝对字符串存储在NSUserDefault中



我指的是在NSUserDefault中存储iPod库的NSURL的上一篇文章。但它不会在应用程序关闭后存储在NSUserDefault中。

我使用其他nsstring存储在NSUserDefaults这是完美完成的,但是当我存储NSUrl作为绝对字符串..它不存储值。

原因是什么??

编辑

下面的代码我用来保存NSUserDefault值:

currentItem = [collection.items objectAtIndex:songCount];
songURL = [currentItem valueForProperty:MPMediaItemPropertyAssetURL];
[[NSUserDefaults standardUserDefaults] setObject:[currentItem valueForProperty:MPMediaItemPropertyTitle] forKey:@"songTitle"];
[[NSUserDefaults standardUserDefaults] setObject:[songURL absoluteString] forKey:@"songURL"];
avPlayer = [[AVPlayer alloc] initWithURL:songURL];
NSLog(@"songTitle: %@  songURL : %@",[[NSUserDefaults standardUserDefaults]objectForKey:@"songTitle"], songURL);

尝试保存NSURL时出现以下错误:

2011-09-13 18:47:23.258 Tabata Timer[933:707] songURL : ipod-library://item/item.mp3?id=-3715406019015217536
2011-09-13 18:47:23.258 Tabata Timer[933:707] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 'ipod-library://item/item.mp3?id=-3715406019015217536' of class 'NSURL'.
2011-09-13 18:47:23.260 Tabata Timer[933:707] songTitle : Ghajini
2011-09-13 18:47:24.860 Tabata Timer[933:707] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 'ipod-library://item/item.mp3?id=-3715406019015217536' of class 'NSURL'.
2011-09-13 18:47:24.963 Tabata Timer[933:707] songURL : ipod-library://item/item.mp3?id=-3715406019015217536
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).

如果你想存储NSURL,那么为什么你把它转换成字符串并保存为字符串。这会增加你的工作努力。

你可以试试:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];     
[defaults setURL:[NSURL URLWithString:@"http://www.google.com"] forKey:@"urlValue"];
[defaults synchronize];
NSURL *url=[defaults URLForKey:@"urlValue"];
NSLog(@"%@",url);

我能想到的唯一可以解释的是,URL至少是部分随机生成的,因此在应用程序删除对它的引用后无法加载。"关门"是什么意思?摘要吗?还是真的终止了?

也可能是您应该将其保存为string:yourURLString forKey:@"URL"而不是对象。它可能会混淆应用程序。尝试NSLog输出URL字符串,看看你得到什么。告诉我是什么。这样就清楚了。

你的字符串应该有属性声明…然后尝试将其存储在NSUserDefaults

最新更新