我再次来到互联网,戴着帽子。 :)使用类方法创建一个NSArray
我试图使用一个类方法返回包含其它数组作为元素填充的阵列:
.H:
@interface NetworkData : NSObject {
}
+(NSString*) getCachePath:(NSString*) filename;
+(void) writeToFile:(NSString*)text withFilename:(NSString*) filePath;
+(NSString*) readFromFile:(NSString*) filePath;
+(void) loadParkData:(NSString*) filename;
+(NSArray*) generateColumnArray:(int) column type:(NSString*) type filename:(NSString*) filename;
@end
的.m:
#import "NetworkData.h"
#import "JSON.h"
#import "Utility.h"
@implementation NetworkData
+(NSString*) getCachePath:(NSString*) filename {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *cachePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0], filename];
[paths release];
return cachePath;
}
+(void) writeToFile:(NSString*)text withFilename:(NSString*) filename {
NSMutableArray *array = [[NSArray alloc] init];
[array addObject:text];
[array writeToFile:filename atomically:YES];
[array release];
}
+(NSString*) readFromFile:(NSString*) filename {
NSFileManager* filemgr = [[NSFileManager alloc] init];
NSData* buffer = [filemgr contentsAtPath:filename];
NSString* data = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
[buffer release];
[filemgr release];
return data;
}
+(void) loadParkData:(NSString*) filename {
NSString *filePath = [self getCachePath:filename];
NSURL *url = [NSURL URLWithString:@"http://my.appserver.com"];
NSData *urlData = [NSData dataWithContentsOfURL:url];
[urlData writeToFile:filePath atomically:YES];
}
+(NSArray*) generateColumnArray:(int) column type:(NSString*) type filename:(NSString*) filename {
// NSLog(@"generateColumnArray called: %u %@ %@", column, type, filename);
// productArray = [[NSMutableArray alloc] init];
// NSString *filePath = [self getCachePath:filename];
// NSString *fileContent = [self readFromFile:filePath];
// NSString *jsonString = [[NSString alloc] initWithString:fileContent];
// NSDictionary *results = [jsonString JSONValue];
// NSArray *eventsArray = [results objectForKey:type];
// NSInteger* eventsArrayCount = [eventsArray count];
// NSInteger* a;
// for (a = 0; a < eventsArrayCount; a++) {
// NSArray *eventsColSrc = [eventsArray objectAtIndex:a];
// NSArray *blockArray = [eventsColSrc objectAtIndex:column];
// [productArray addObject:blockArray];
// [blockArray release];
// }
// [eventsArray release];
// [results release];
// [jsonString release];
// [fileContent release];
// [filePath release];
// [a release];
// [eventsArrayCount release];
// return productArray;
}
-(void)dealloc {
[super dealloc];
}
@end
..和电话:
NSArray* dataColumn = [NetworkData generateColumnArray:0 type:@"eventtype_a" filename:@"data.json"];
该方法内的代码有效(不是很漂亮,我知道 - noob在工作)。它本质上是没有意义的,因为只是调用它(没有活动代码,如图所示)会导致应用程序在启动屏幕显示其他任何内容之前退出。
我敢打赌,这是一个头灯 - 非常感谢你的任何知识,你可以放弃。
控制台没有任何东西 - 那是什么让我扭曲......它只是回落到跳板。返回“零”没有任何区别。感谢您的提示,尽管... – JSpread 2011-04-23 06:45:13
所以,第一个问题是(当然)内存管理......通过@interface中的常规调整修复了问题。现在,该方法返回数据 - 然后 - 它崩溃。回到绘图板! – JSpread 2011-04-23 06:59:41