[英]File like plist in iOS for Windows Phone 8
I am wondering is ther similar solution for saving all kind of data to file like it's done in iOS with plist files? 我想知道是否有类似的解决方案用于将所有类型的数据保存到文件中,就像在iOS中使用plist文件一样?
Loading data to NSArray
将数据加载到
NSArray
[NSMutableArray arrayWithArray:[[NSArray alloc] initWithContentsOfFile:pathToFile]]
Write data to file 将数据写入文件
[NSArray writeToFile:destPath atomically:YES];
I know there is something similar to [NSUserDefaults standardUserDefaults]
and it is IsolatedStorageSettings.ApplicationSettings
我知道有类似于
[NSUserDefaults standardUserDefaults]
东西,它是IsolatedStorageSettings.ApplicationSettings
Any help will appreciated. 任何帮助将不胜感激。
In this question I have exampled use of 1 Soonts method. 在这个问题中,我使用了1个Soonts方法。
There're many solutions. 有很多解决方案。
For different requirements, I prefer 1 and 5. 对于不同的要求,我更喜欢1和5。
Update: here's the sample code implementing #1. 更新:这是实现#1的示例代码。 The code is tested, but there's still some room for improvements.
代码经过测试,但仍有一些改进空间。
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
namespace NS
{
/// <summary>This static class handles data serialization for the app.</summary>
/// <remarks>
/// <para>The serialization format is Microsoft's .NET binary XML, documented in [MC-NBFX] specification.</para>
/// <para>The efficiency could be improved further, by providing a pre-built XML dictionary.</para>
/// </remarks>
internal static class Serializer
{
/// <summary>Serializers are cached here</summary>
static readonly Dictionary<Type, DataContractSerializer> s_serializers = new Dictionary<Type, DataContractSerializer>();
/// <summary>Either get the serializer from cache, or create a new one for the type</summary>
/// <param name="tp"></param>
/// <returns></returns>
private static DataContractSerializer getSerializer( Type tp )
{
DataContractSerializer res = null;
if( s_serializers.TryGetValue( tp, out res ) )
return res;
lock( s_serializers )
{
if( s_serializers.TryGetValue( tp, out res ) )
return res;
res = new DataContractSerializer( tp );
s_serializers.Add( tp, res );
return res;
}
}
/// <summary>Read deserialized object from the stream.</summary>
/// <typeparam name="T"></typeparam>
/// <param name="stm"></param>
/// <returns></returns>
public static T readObject<T>( Stream stm ) where T: class
{
DataContractSerializer ser = getSerializer( typeof( T ) );
using( var br = XmlDictionaryReader.CreateBinaryReader( stm, XmlDictionaryReaderQuotas.Max ) )
return (T)ser.ReadObject( br );
}
/// <summary>Write serialized object to the stream.</summary>
/// <typeparam name="T"></typeparam>
/// <param name="stm"></param>
/// <param name="obj"></param>
public static void writeObject<T>( Stream stm, T obj ) where T: class
{
DataContractSerializer ser = getSerializer( typeof( T ) );
using( XmlDictionaryWriter bw = XmlDictionaryWriter.CreateBinaryWriter( stm, null, null, false ) )
{
ser.WriteObject( bw, obj );
bw.Flush();
}
stm.Flush();
}
}
}
I've written an article about various ways of saving data in Windows Phone applications that might be helpful. 我写了一篇关于在Windows Phone应用程序中保存数据的各种方法的文章可能会有所帮助。 I've used JSON with an Isolated Storage File in a number of my apps, and there's some sample code there.
我在许多应用程序中都使用了JSON和隔离存储文件,那里有一些示例代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.