我一直在玩这个游戏几个小时,并且卡住了。我试图使用Monotouch在NSUserDefaults中保存一个Favorite对象列表。我相信我是在正确的轨道上,但我不能完全得到它...这里是我的模型对象:使用Monotouch将自定义列表保存在NSUserDefaults中
public class Favorite {
public Favorite(){}
public string Description {get;set;}
public Song Song {get;set;}
}
public class Song {
public Song(){}
public string Name {get;set;}
public string Artist {get;set;}
}
接下来,我要保存用户已选择收藏夹列表。从我读过的内容中,我可以使用NSArray来保存NSUserDefaults中的项目列表。那么,我如何从收藏夹列表中移除收藏夹的NSArray ......我一直没有找到任何关于此的文档。这里是我的设置包装:
public class Settings {
private static string _favoritesKey = "favorites";
public static IList<Favorite> Favorites {get;set;}
public static void Add(Favorite favorite){
Favorites.Add(favorite);
}
public static void Remove(Favorite favorite){
Favorites.Remove(favorite);
}
public static void Read()
{
var tempFavorites = (NSArray)NSUserDefaults.StandardUserDefaults[_favoritesKey];
if(tempFavorites == null){
Favorites = new List<Favorite>();
}
else {
for(uint i=0;i<tempFavorites.Count;i++){
var fav = tempFavorites.ValueAt(i); //returns IntPtr
// do something to convert to Favorite
// Favorites.Add(converted_favorite);
}
}
}
public static void Write()
{
var tempArray = Favorites.ToArray();
// convert to NSObject[]
NSUserDefaults.StandardUserDefaults[_favoritesKey] = NSArray.FromNSObjects(converted_array);
NSUserDefaults.StandardUserDefaults.Synchronize();
}
}
我在正确的轨道上?它看起来像我需要做的是弄清楚如何转换和从NSObjects。另外,如果我将这些自定义对象保存在NSUserDefaults中,它们是否需要可序列化?非常感谢!
我没有按照你的建议去做,但你的解决方案确实回答了我提出的问题......谢谢。 – 2010-11-10 15:56:01