在SaveAsync()上解析异常

时间:2014-11-12 01:24:37

标签: c# parse-platform xamarin

在尝试创建然后保存parseObject时偶尔(大约1/6),我得到以下异常抛出

在System.DateTime.ParseExact(System.String s,System.String []格式,IFormatProvider提供程序,DateTimeStyles样式)[0x00000] in:0   在System.DateTime.ParseExact(System.String s,System.String格式,IFormatProvider提供程序,DateTimeStyles样式)[0x00000] in:0   在System.DateTime.ParseExact(System.String s,System.String format,IFormatProvider provider)[0x00000] in:0   在Parse.ParseClient.ParseDate(System.String输入)[0x00000]中:0   在Parse.ParseObject.MergeMagicFields(IDictionary`2 data)[0x00000] in:0   在Parse.ParseObject.MergeFromServer(IDictionary`2 data)[0x00000] in:0   在Parse.ParseObject.MergeAfterSave(IDictionary`2 result)[0x00000] in:0   在Parse.ParseObject + c__DisplayClass1f.b__1b(System.Threading.Tasks.Task`1 t)[0x00000] in:0   在System.Threading.Tasks.TaskActionInvoker + FuncTaskInvoke`2 [System.Tuple`2 [System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2 [System.String,System.Object]],System.Threading.Tasks .Task`1 [System.Tuple`2 [System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2 [System.String,System.Object]]]]。Invoke(System.Threading.Tasks.Task owner, System.Object state,System.Threading.Tasks.Task context)[0x00000] in:0   在System.Threading.Tasks.Task.InnerInvoke()[0x00000]中:0   在System.Threading.Tasks.Task.ThreadStart()[0x00000]中:0

我正在使用.net解析版本1.3.1。

导致错误的代码如下所示:

ParseObject po = new ParseObject( "Journey" );
po.ObjectId = journey.ID;
po["audioCount"] = journey.AudioFiles.Count;
po["locationPointCount"] = journey.LocationPoints.Count;
po["photoCount"] = journey.PhotoFiles.Count;
po["videoCount"] = journey.VideoFiles.Count;
po["startTime"] = journey.StartTime;
po["endTime"] = journey.EndTime;
po["notes"] = journey.Notes;
po["isInProgress"] = journey.IsInProgress;

po.AddRangeUniqueToList( "audioFiles", audioFiles );
po.AddRangeUniqueToList( "photoFiles", photoFiles );
po.AddRangeUniqueToList( "videoFiles", videoFiles );

po.ACL = new ParseACL(ParseUser.CurrentUser);
po["user"] = ParseUser.CurrentUser;

await po.SaveAsync();

感谢您的帮助

编辑: 删除" startTime"和" endTime"来自ParseObject并没有解决问题。

编辑: 为了获得更多信息,这里是" MergeMagicFields"的反汇编。似乎导致问题的方法。最终调用的唯一路径" ParseData"似乎与解析内部数据有关。

internal virtual void MergeMagicFields( IDictionary<string, object> data )
{
    lock( this.mutex )
    {
        if( data.ContainsKey( "objectId" ) )
        {
            this.SetObjectIdInternal( data["objectId"] as string );
            this.hasBeenFetched = true;
            this.OnPropertyChanged( "IsDataAvailable" );
            data.Remove( "objectId" );
        }
        if( data.ContainsKey( "createdAt" ) )
        {
            this.CreatedAt = new DateTime?( ParseClient.ParseDate( data["createdAt"] as string ) );
            data.Remove( "createdAt" );
        }
        if( data.ContainsKey( "updatedAt" ) )
        {
            this.UpdatedAt = new DateTime?( ParseClient.ParseDate( data["updatedAt"] as string ) );
            data.Remove( "updatedAt" );
        }
        if( data.ContainsKey( "ACL" ) )
        {
            ParseACL parseACL = new ParseACL( data["ACL"] as IDictionary<string, object> );
            this.serverData["ACL"] = parseACL;
            this.AddToHashedObjects( parseACL );
            data.Remove( "ACL" );
        }
    }
}

1 个答案:

答案 0 :(得分:0)

[以防其他人遇到此问题]

在向Facebook报告问题后,看来这是一个问题。

您可以在此处跟踪问题的进展情况:

https://developers.facebook.com/bugs/789062014466095/

相关问题