我从阵列中的Meteor服务器收到几个(0-10)对象。它们可能在控制台中看起来像这样:
let allConferences = conferences.allDocuments
print(allConferences)
控制台输出:
[<METDocument key: <collection: conferences, ID: Hr3bw6pySG8G3TKzh>, fields: {
createdAt = "2015-11-03 13:43:05 +0000";
type = doctor;
user = KTsCySacEAiz3eDnf;
userdata = {
birthdate = "Male";
gender = "<null>";
};
}>, <METDocument key: <collection: conferences, ID: RmfQm96Kcj5JTfDQM>, fields: {
createdAt = "2015-11-03 13:40:12 +0000";
type = doctor;
user = KTsCySacEAiz3eDnf;
userdata = {
birthdate = "<null>";
gender = "<null>";
};
}>]
我需要以我可以在Swift 2.1中轻松使用的格式获取此数据。例如,我需要根据createdAt字段对对象进行排序,然后使用tableView中标签中的一些其他字段。
我按照this answer
尝试了NSJSONSerializationdo {
if let jsonResult = try NSJSONSerialization.JSONObjectWithData(allConferences, options: []) as? NSDictionary {
print(jsonResult)
}
} catch {
print(error)
}
但是这给了我错误无法将'[AnyObject]'类型的值转换为预期的参数类型'NSData'
我可以使用此方法直接访问字段区域:
let oneConferencesField: NSDictionary = conferences.allDocuments[0].valueForKey("fields") as! NSDictionary
如果有人知道如何使用NSJSONSerialization的经典方法解析这些数据会很棒 - 谢谢。
答案 0 :(得分:1)
import numpy
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
a = numpy.array([[ 3.57, 1.76, 7.42, 6.52],
[ 1.57, 1.2 , 3.02, 6.88],
[ 2.23, 4.86, 5.12, 2.81],
[ 4.48, 1.38, 2.14, 0.86],
[ 6.68, 1.72, 8.56, 3.23]])
xs = a[:,::2]
ys = a[:, 1::2]
lines = LineCollection([list(zip(x,y)) for x,y in zip(xs, ys)], label='data_a')
f, ax = plt.subplots(1, 1)
ax.add_collection(lines)
ax.legend()
ax.set_xlim([xs.min(), xs.max()]) # have to set manually
ax.set_ylim([ys.min(), ys.max()])
plt.show()
仅适用于 JSON数据(例如来自服务器)。您的NSJSONSerialization.JSONObjectWithData
对象是allConferences
个对象的数组,而不是数据,所以它是正常的,它不起作用。
阅读文档,看起来您可以使用其fields属性从METDocument获取字典。
因此,要从对象中提取字典,您可以这样做:
METDocument