gpt4 book ai didi

c# - 在 MonoTouch 中的文件上设置数据保护标志的简单方法?

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:26 25 4
gpt4 key购买 nike

目前我正在使用一种方法来设置数据保护属性,这对我来说看起来很尴尬。我想知道是否有更直接的方法,而不是处理 NSStringNSMutableDictionary?这就是我目前正在使用的(我知道它可以通过“using”语句进行优化,但这不是我想要的):

public static void SetDataProtectionFor ( string sFileToProtect )
{
NSError oError = null;
NSMutableDictionary oDic = null;

try
{

oDic = new NSMutableDictionary ();
oDic.Add ( new NSString ("NSFileProtectionKey"), new NSString ("NSFileProtectionComplete") );


NSFileManager.DefaultManager.SetAttributes ( oDic, sFileToProtect, out oError );
if ( oError != null )
{
throw new DataProtectionGoneMissingException ();
}
}
catch ( Exception ex )
{
throw new DataProtectionGoneMissingException ();
}
finally
{
if ( oDic != null )
{
oDic.Dispose ();
oDic = null;
}

}
}

最佳答案

现在?不多。这是 Objective-C 的方式,MonoTouch(生成的)绑定(bind)允许您遵循相同的模式。

您可以避免创建 NSString 并使用 MonoTouch 提供的那些,例如'NSFileManager.FileProtectionCompleteNSFileManager.FileProtectionKey。这将避免多次创建两个 NSString 实例(如果您的方法被多次调用,MonoTouch 版本将被延迟创建和缓存)并消除拼写错误的可能性。

因此使用 C#3 语法这将变成:

NSMutableDictionary oDic = new NSMutableDictionary () {
{ NSFileManager.FileProtectionKey, NSFileManager.FileProtectionComplete }
};

我们还尝试提供更多 C#-ish API 来完成与 NSDictionary 相同的工作。 OTOH 因为有很多 API 使用 NSDictionary 作为选项,我们(到目前为止)只有最常见的选项。

注意:请随时提交文件增强 bug reports当您发现 API 可以做得更好的情况时

例如基于类似的案例(以前做过),理想情况下这会/应该是这样的:

var attr = new NSFileManagerAttribute ();
attr.ProtectionKey = NSFileManager.ProtectionComplete; // enum version
NSFileManager.DefaultManager.SetFileAttribute (sFileToProtect, attr);

它不会节省太多代码行(至少对于单个值而言),但它会使源代码看起来更好(IMO)并且更易于使用代码完成并避免拼写错误(在字符串上)。

关于c# - 在 MonoTouch 中的文件上设置数据保护标志的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com