[英]NSArray from NSString (in plist format)
我使用NSURLConnection從遠程服務器獲取plist文件的內容。
在connection:didRecieveData上:我將最新數據添加到NSMutableString中。
現在我的問題是將此數據添加到數組中。 因此,您擁有arrayWithContentsOfURL-是同步的-但我想我可以將NSString的內容添加到應用程序文檔目錄中的文件中,然后使用arrayWithContentsOfURL?
我只是希望有一種更簡單的方法?
謝謝
我在我的應用程序中做同樣的事情,我使用了ASIHttpRequest ,效果很好。 回到我的字符串后,我翻譯成字典。
NSDictionary *dict = [[NSDictionary alloc] initWithDictionary:myString];
我將此字典發送到一個解析類,可以從中獲得一個對象。
xmlTrainNumber* fileResult = [[[xmlTrainNumber alloc] initWithDictionary:dict] autorelease];
xmlTrainNumber類如下所示:
#import "xmlTrainNumber.h"
#import "trainNumberResultSet.h"
@interface xmlTrainNumber (Private)
- (NSArray*)_parseXmlDictionary:(NSDictionary*)aDictionary;
@end
@implementation xmlTrainNumber
@synthesize timeXmlResult;
- (id)initWithDictionary:(NSDictionary*)aDictionary
{
self = [super init];
if (self)
{
timeXmlResult = [self _parseXmlDictionary:aDictionary];
}
return self;
}
- (NSArray*)_parseXmlDictionary:(NSDictionary*)aDictionary
{
if (aDictionary != NULL && [aDictionary count] > 0)
{
NSNumber *version = [aDictionary objectForKey:@"version"];
NSNumber *statusCode = [aDictionary objectForKey:@"statusCode"];
if ([[statusCode stringValue] isEqualToString:@"1"])
{
NSString *title = [aDictionary objectForKey:@"title"];
if (version != NULL)
{
NSArray* results = [aDictionary objectForKey:@"results"];
if (results != NULL)
{
NSMutableArray* result = [[NSMutableArray alloc] init];
for (NSDictionary* currentResult in results)
{
// TODO: add error handling
[result addObject:[[trainNumberResultSet alloc] initWithStation:[currentResult objectForKey:@"station"]
arrival:[currentResult objectForKey:@"arrival"]
departure:[currentResult objectForKey:@"departure"]
newArrival:[currentResult objectForKey:@"newArrival"]
newDeparture:[currentResult objectForKey:@"newDeparture"]
expectedArrival:[currentResult objectForKey:@"expectedArrival"]
expectedDeparture:[currentResult objectForKey:@"expectedDeparture"]
track:[currentResult objectForKey:@"track"]
info:[currentResult objectForKey:@"info"]
title:title]];
}
return result;
}
else
{
// TODO: throw exception instead
return NULL;
}
}
else
{
// TODO: throw exception instead
return NULL;
}
}
else {
return nil;
}
}
else
{
// TODO: throw exception instead
return NULL;
}
}
- (NSArray*)getTimeResult
{
return timeXmlResult;
}
- (void)dealloc
{
if (timeXmlResult != NULL)
{
[timeXmlResult release];
}
[super dealloc];
}
@end
trainNumberResultSet
類只是一個帶有一些設置器的類,用於保存分配的數據。 我在這段代碼中還剩下一些todo
...但是我希望無論如何都能對您有所幫助。 這個對我有用。 該數組是trainNumberResultSet
對象的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.