在Monotouch中,是否可以将通用列表保存到NSUserDefaults?
我在我的MonoTouch应用程序中有一个List<Hashtable>
,我需要将其保存到我的设置。 NSUserDefaults
,但是,只接受从NSObject
inheritance的东西。
有没有一种简单的方法来包装我的List中,我可以存储在我的设置,或者是一个快速通用的方式来编码和解码一个JSONstring(或类似)的Hashtable
?
还是有一个MonoTouch的替代品,坚持一个小的Hashtable
?
就像@Maxim所说有几种方法可用。 如果你想使用NSUserDefaults
来存储你的数据,那么你可以使用MonoTouch对它进行序列化(你可以使用一个.NETfunction)来:
-
一个二进制格式 。 然后使用
Stream
(或byte[]
)创build一个NSData
实例,您可以使用NSUserDefaults
存储; 要么 -
到一个string ,并将其存储为一个
NSString
(string
重载也可用,但它将做NSString
转换);
为什么不把你的数据保存到SQLite表?
你可以创build一个安静简单的表格与领域:
- id – auto inc int – 主键;
- 列表名称 – string – 标识确切的列表;
- 列表数据 – 字节[] – 列表的数据。
对于列表 – >字节[](反之亦然)转换尝试使用这样的代码:
public static class Bytes { /// <summary> /// Function to get byte array from a object /// </summary> /// <param name="_Object">object to get byte array</param> /// <returns>Byte Array</returns> public static byte[] ObjectToByteArray (object obj) { try { var _MemoryStream = new MemoryStream (); var _BinaryFormatter = new BinaryFormatter (); _BinaryFormatter.Serialize (_MemoryStream, obj); return _MemoryStream.ToArray (); } catch (Exception _Exception) { Console.WriteLine ("Exception caught in process: {0}", _Exception.ToString ()); } return null; } public static T ByteArrayToObject<T> (byte[] arrBytes) { var memStream = new MemoryStream (); var binForm = new BinaryFormatter (); memStream.Write (arrBytes, 0, arrBytes.Length); memStream.Seek (0, SeekOrigin.Begin); var result = default(T); try { result = (T)binForm.Deserialize (memStream); } catch (Exception ex) { Console.WriteLine ("Deserialize error {0}", ex); } return result; } }
- 如何在Azure中debuggingtesting发送?
- .Net UserControl XCode等效
- Apple IOS上的C#应用程序
- 在.NET中创build的OpenXML电子表格不会在iPad中打开
- 如何通过HTTP发送数据字节到.NET服务器
- 继续在Apple的VerifyReceipt上得到21002'java.lang.NullPointerException'
- iOS应用程序和.NET应用程序之间的通信
- 什么请求头用于上传图像文件从iOS到ASP.NET?
- 如何设置file upload到服务器没有.json扩展到使用.NET框架的内容types“application / json”