从 ParseObject 中检索 ParseFile - Android C# Xamarin Parse

Posted

技术标签:

【中文标题】从 ParseObject 中检索 ParseFile - Android C# Xamarin Parse【英文标题】:Retrieving a ParseFile from within a ParseObject - Android C# Xamarin Parse 【发布时间】:2015-01-02 13:23:29 【问题描述】:

我已经为此苦苦挣扎了一段时间。我已经设法使用 Xamarin & C# (for android) 创建了一个应用程序。该应用程序成功地将录音发送到我的 Parse 文件夹 (https://parse.com/)。从解析网站上的仪表板,我可以下载声音文件并成功播放。

不过,我需要能够从应用程序中下载和播放声音。 到目前为止,我可以检索包含包含声音的 parseFile 的 parseObject (以字节为单位)。我不知道如何进入该 parseObject 并提取文件。

这是我发送数据的方式:

 byte[] data = File.ReadAllBytes(LoadPath);

ParseFile file = new ParseFile(savetheFile, data);

await file.SaveAsync();

var auidoParseObject = new ParseObject("AudioWithData");
//Console.WriteLine(ParseUser.getUserName());

if (ParseUser.CurrentUser != null)
                
                    tempUserName = ParseUser.CurrentUser.Username.ToString();
                

else
                
                    tempUserName = "Anonymous";
                
                Console.WriteLine("PARSE USERNAME: " + tempUserName);
                auidoParseObject["userName"] = tempUserName;
                auidoParseObject["file"] = file;
                await auidoParseObject.SaveAsync();

这是我从解析云中检索它的尝试:

var query1 = ParseObject.GetQuery ("AudioWithData")
                .WhereEqualTo ("userName", username);

IEnumerable<ParseObject> results1 = await query1.FindAsync();

Console.WriteLine ("At 0:" + results1.ElementAt (0).ToString ());
            Console.WriteLine("At 1:" + results1.ElementAt (1).ToString());
            Console.WriteLine("At 2:" + results1.ElementAt (2).ToString());

在这里,控制台将写入: 在 0:Parse.ParseObject 在 1:Parse.ParseObject At 2:Parse.ParseObject

我现在需要提取该 parseObject 的“文件”部分...但是如何!?

任何帮助将不胜感激, 谢谢!

【问题讨论】:

【参考方案1】:
var file = results1[0].Get<ParseFile>("file");
byte[] data = await new HttpClient().GetByteArrayAsync(file.Url);

【讨论】:

嗨,Jason,很抱歉我迟迟没有回复您。我遇到以下错误:无法将 [] 索引应用于“System.Collections.Generic.IEnumerable”类型的表达式(CS0021) 你好,对不起,我有点仓促发表评论,我用这一行代替 var myfile = results1.ElementAt(0).Get("file");它似乎没问题。但是,我目前只有一个模拟器可供使用。一旦我在安卓设备上尝试过,我会将此标记为正确的。谢谢。【参考方案2】:

您可以使用下面的代码从解析中获取您的文件,我使用了此代码并且对我来说工作正常。

public static Task<IEnumerable<YourModel>> GetFiles(UserName userName)
    
        return new ParseQuery<YourModel> ()
            .Where (x => x.userName == userName)
            .FindAsync();
    

【讨论】:

嗨,Ricardo,很抱歉,我有点 c# 菜鸟...我对 VB.NET 比较熟悉,所以我对 .NET 框架有所了解,但是我对你提供的方法有点困惑。你能再具体一点吗?谢谢。 您可以使用上述方法检索对象,以获取其所有属性,例如您可以使用此代码“GetFiles.File.Url”。

以上是关于从 ParseObject 中检索 ParseFile - Android C# Xamarin Parse的主要内容,如果未能解决你的问题,请参考以下文章

从 PraseQuery 颤振中检索特定数据

如何从 Parse.com 检索数组

从 Parse.com 检索数据到 ArrayList<Object>

无法创建指向未保存 ParseObject 的指针

ParseObject 值即使在活动被破坏后仍然存在

json.parseobject效率怎么样