我指的是Previous Post用于在NSUserDefault中存储iPod库的NSURL。但应用程序关闭后,它不会存储在NSUserDefault中。
我正在使用其他NSStrings存储在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).
答案 0 :(得分:22)
如果要存储NSURL,那么为什么要将其转换为字符串并将其保存为字符串。它会增加你的工作量。
你可以试试这个:
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setURL:[NSURL URLWithString:@"http://www.google.com"] forKey:@"urlValue"];
[defaults synchronize];
NSURL *url=[defaults URLForKey:@"urlValue"];
NSLog(@"%@",url);
答案 1 :(得分:1)
我能想到的唯一可以解释的是,URL至少部分是随机生成的,因此在应用程序删除对它的引用后无法加载。你是什么意思,“关闭”?转到后台?还是真的终止了?
也可能是您应该将其另存为string:yourURLString forKey:@"URL"
而不是对象。它可能会混淆应用程序。尝试NSLog
输出网址字符串,看看你得到了什么。让我知道它是什么。这将澄清事情。
答案 2 :(得分:0)
你的字符串应该声明属性...然后尝试将其存储在NSUserDefaults