Xamarin.forms NSUrl未正确初始化

Xamarin.forms NSUrl未正确初始化,xamarin.forms,xamarin.ios,Xamarin.forms,Xamarin.ios,我在Xamarin.ios项目的音乐文件夹中放置了25个mp3文件。 我调用了Play函数并输入了一个我想播放的mp3文件的名称。我创建了一个字符串对象,其中包含文件路径。 然后我创建另一个名为withFileName的string对象,其中包含传递到函数中的路径和歌曲名。withFileName变量看起来正确 当我执行指令时 songURL = new NSUrl(withFileName); 我得到以下例外 System.Exception:无法初始化“Foundation.NSUrl”类

我在Xamarin.ios项目的音乐文件夹中放置了25个mp3文件。 我调用了Play函数并输入了一个我想播放的mp3文件的名称。我创建了一个字符串对象,其中包含文件路径。 然后我创建另一个名为withFileName的string对象,其中包含传递到函数中的路径和歌曲名。withFileName变量看起来正确

当我执行指令时

songURL = new NSUrl(withFileName);
我得到以下例外

System.Exception:无法初始化“Foundation.NSUrl”类型的实例:本机“initWithString:”方法返回nil。通过将MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure设置为false,可以忽略此条件。在NSO…

我迷路了,需要帮助

代码段:

public void Play(String song)
    {

        String dir = Directory.GetCurrentDirectory();
        String filePath = Path.Combine(dir, "Music");

        String withFileName = String.Format("{0}/{1}", filePath, song);

        NSUrl songURL = null;  

        try
        {

            songURL = new NSUrl(withFileName);
        }
        catch (Exception e)
        {
            string msg = e.Message;  
        }

        NSError err;

        _audioPlayer = new AVAudioPlayer( songURL,"Song", out err );
        _audioPlayer.Play();

    }

看起来您可以获得嵌入到项目中的文件的正确路径。然后,如果要获取文件的url,应使用:

new NSUrl(filePath, false);
//or
NSUrl.FromFilename(filePath)

您的第一个示例有效,但编译器无法识别第二个示例。我还有一个问题。是否可以使用~字符创建NSUrl对象?如果是的话,是如何做到的?你能提供一个关于这个主题的文档链接吗。代码也在IOS iPhone模拟器下运行。当部署到本机IPhone时,相同的代码会起作用吗?我说的是NSUrl文件路径。@BobBarbara如果你的文件在project或sandbox中,我们应该从文件路径创建url。另一方面,如果你想加载一个网站。我们也将创建一个url,在本例中,我们是从字符串创建的。@BobBarbara在大多数情况下,我们希望通过url获取文件,所以我们总是使用filePath的方法。