我从JSON格式的MySQL数据库中获取数据。在Objective-C文件中,数据被修改并放入 NSMutableArray (“ _data ”)。通过函数“ itemsDownloaded ”,一旦从数据库下载完成并接收到“_data”-array,代理就会收到通知。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// Create an array to store the data
NSMutableArray *_data = [[NSMutableArray alloc] init];
// Parse the JSON that came in
NSError *error;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:_downloadedData options:NSJSONReadingAllowFragments error:&error];
// Loop through Json objects, create question objects and add them to our questions array
for (int i = 0; i < jsonArray.count; i++)
{
NSDictionary *jsonElement = jsonArray[i];
// Create a new data object and set its props to JsonElement properties
Data *newData = [[Data alloc] init];
newData.sozialversicherungsnummer = jsonElement[@"Sozialversicherungsnummer"];
newData.messzeitpunkt = jsonElement[@"Messzeitpunkt"];
newData.puls = jsonElement[@"Puls"];
newData.sauerstoffgehalt = jsonElement[@"Sauerstoffgehalt"];
// Add this question to the locations array
[_data addObject:newData];
}
// Ready to notify delegate that data is ready and pass back items
if (self.delegate)
{
[self.delegate itemsDownloaded:_data];
}
}
我的目标是访问“newData”的属性“sozialversicherungsnummer”,“messzeitpunkt”,“puls”和“sauerstoffsättigung”(在上面的文件中)。 “数据”类定义了这四个属性。
现在我想在 swift文件中的图表中显示这些属性。例如,我想在x轴上显示“messzeitpunkt”,在y轴上显示“puls”。我知道如何处理图表,但我的问题是我不知道如何访问swift文件中的属性。
如果我将这些行写入swift文件:
var data: NSArray = [];
func itemsDownloaded(items: [AnyObject]!) {
data = items
print("\(data)")
}
我在输出中得到了这个:
(
"<Data: 0x7ca5ff60>",
"<Data: 0x7ca5dab0>",
"<Data: 0x7be497e0>",
"<Data: 0x7ca42c00>"
)
有人可以帮助我吗?
答案 0 :(得分:2)
问题在于你不需要NSArray。斯威夫特不知道NSArray里面有什么。你想要一个 Swift 数组,即[Data]
。这样,Swift知道每个项目都是数据,您可以访问其属性。
您的输出是:
(
"<Data: 0x7ca5ff60>",
"<Data: 0x7ca5dab0>",
"<Data: 0x7be497e0>",
"<Data: 0x7ca42c00>"
)
这正是你想要和期待的!您有一个包含四个Data对象的数组。唯一的问题是你忘了告诉Swift这件事。您需要将数组键入[Data]
或将其转换为[Data]
。
例如,您现在要说的是:
func itemsDownloaded(items: [AnyObject]!) {
data = items
print("\(data)")
}
试着说:
func itemsDownloaded(items: [AnyObject]!) {
let datas = items as! [Data]
datas.forEach {print($0.messzeitpunkt)}
}
这是合法的,因为现在你告诉Swift数组中的内容。您将看到您的数据完全符合您的预期。