将字符串列表放入NSUserDefaults对象中

我有两个ios应用程序,第一个包含app,第二个是今天的widget应用程序。

在app app中的appdelegate类中,我有符号列表,我想用NSUserDefaults对象传递,因为我需要在今天的widget应用程序中获取此对象。

我的问题是我无法将字符串 列表存储到NsUserDefaults对象中。

Object有几种方法:SetBool,SetDouble,SetInt,SetString但是没有方法可以占用一些对象。

只有一种方法是将NSObject用于值,将NSString用于键。

这是我的代码

var userSharedContent = NSUserDefaults.StandardUserDefaults; var symbols = await DatabaseManager.Instance.GetRecentCoinsAsync(5); // returns list of tuples var listOfStrings = symbols.Select(o => o.symbol).ToList(); // take strings for tuples and conver it to List() userSharedContent.SetValueForUndefinedKey() 

如何解决此问题并将列表转换为NSobject以传递它。

什么是解决方案? 我已经在这个任务中累了三天了。 我想将数据从一个应用程序传递到另一个应用程序。

请帮我解决这个问题。

谢谢。

NSUserDefaults使用“本机”类型,因此您必须在C#ObjC类型之间进行一些转换:

List写一个NSAtring的NSArray:

 var listOfStrings = new List { "One", "Two", "Three" }; using (var userDefaults = NSUserDefaults.StandardUserDefaults) using (var nsArray = NSArray.FromStrings(listOfStrings.ToArray())) { userDefaults.SetValueForKey(nsArray, new NSString("MyAppsValues")); userDefaults.Synchronize(); } 

从NSString的NSArray中读取List

 List listOfStrings = new List(); using (var userDefaults = NSUserDefaults.StandardUserDefaults) using (var nsArray = userDefaults.ValueForKey(new NSString("MyAppsValues")) as NSArray) { for (uint i = 0; i < nsArray.Count; i++) { var cSharpStr = nsArray.GetItem(i).ToString(); listOfStrings.Add(cSharpStr); } } 
Interesting Posts