找不到Xamarin iOS NSSearchPathForDirectoriesInDomains

时间:2018-09-27 07:08:28

标签: xamarin xamarin.ios

正在编写一些Xamarin.iOS代码以创建目录搜索路径列表。

objective-c版本:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  

,我意识到NSSearchPathForDirectoriesInDomains在Xamarin iOS中不可用,首先,我以为是我做错了什么,但是后来我用Google搜索它,发现与xamarin.ios无关的字面意思是有我不知道的等效于NSSearchPathForDirectoriesInDomains的C#吗?还是我到底想念什么?

到目前为止,我在C#中的代码:

NSArray paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);

注意:没有为此提供的快速操作。

1 个答案:

答案 0 :(得分:2)

Xamarin iOS方法的名称与关联的obj c方法的名称并不罕见,因此有时必须查看xamarin macios绑定的来源。我发现一个静态方法GetDirectories使用了您所追求的objc方法:

public static class NSSearchPath
{
    public static string[] GetDirectories (NSSearchPathDirectory directory, NSSearchPathDomain domainMask, bool expandTilde = true)
    {
        return NSArray.StringArrayFromHandle (NSSearchPathForDirectoriesInDomains ((nuint)(ulong)directory, (nuint)(ulong)domainMask, expandTilde));
    }

    [DllImport (Constants.FoundationLibrary)]
    static extern IntPtr NSSearchPathForDirectoriesInDomains (nuint directory, nuint domainMask, bool expandTilde);
}

用法示例:

string[] directories = NSSearchPath.GetDirectories(NSSearchPathDirectory.UserDirectory, NSSearchPathDomain.All);