【发布时间】:2014-10-03 14:42:50
【问题描述】:
在查询并接收结果后,我似乎无法访问自定义对象数组(即 Parse 表中的一列)。
我有一个简单的自定义类调用“TextEntry”,其中包含 2 个字符串。
public class TextEntry
{
public string key;
public string text;
public TextEntry() { }
}
我有一个名为“LocalePO”的 ParseObject 子类,除了其他原生类型之外,它还有一个 IList 成员。
[ParseClassName("LocalePO")]
public class LocalePO : ParseObject
{
[ParseFieldName("version")]
public int version
{
get { return GetProperty<int>("version"); }
set { SetProperty<int>(value, "version"); }
}
[ParseFieldName("code")]
public string code
{
get { return GetProperty<string>("code"); }
set { SetProperty<string>(value, "code"); }
}
[ParseFieldName("name")]
public string name
{
get { return GetProperty<string>("name"); }
set { SetProperty<string>(value, "name"); }
}
[ParseFieldName("keypair")]
public IList<object> keypair
{
get { return GetProperty<IList<object>>("keypair"); }
set { SetProperty<IList<object>>(value, "keypair"); }
}
public LocalePO() { }
}
我可以查询 Parse 并成功返回一个 LocalePO 对象,但之后我无法访问“keypair”列表的特定“TextEntry”成员。
var cloudQuery = new ParseQuery<LocalePO>();
var queryTask = cloudQuery.FirstAsync();
// wait for query to return
while (!queryTask.IsCompleted) yield return null;
LocalePO locale = queryTask.Result;
int CloudVersion = locale.version; // this works
List<TextEntry> list = new List<TextEntry>();
list = locale.keypair.Cast<TextEntry>.ToList(); // this doesn't work
foreach (var item in locale.keypair)
{
var entry = item as TextEntry; // this does not work
TextEntry entry = (TextEntry)item; // this doesn't work either
// this is my current solution which works but seems terrible
string json = JsonConvert.SerializeObject(item);
TextEntry entry = JsonConvert.DeserializeObject<TextEntry>(json);
list.Add(entry);
}
我觉得我在这里忽略了一些非常简单的事情,但我只想将从 Parse 提取的数据转换为本地对象,以便我可以在整个应用程序逻辑中使用这些数据。
在我看来,Parse 更喜欢 ParseFieldName 类型的 IList,而不是类型为“TextEntry”的 IList。例如,如果我有以下内容,Parse 总是为该字段返回 null:
[ParseFieldName("keypair")]
public IList<TextEntry> keypair
{
get { return GetProperty<IList<TextEntry>>("keypair"); }
set { SetProperty<IList<TextEntry>>(value, "keypair"); }
}
也许我也应该从 ParseObject 派生 TextEntry?我很困惑。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
标签: json unity3d parse-platform ilist