다시 한 번 나는 인터넷에 온 것입니다. :)클래스 메서드를 사용하여 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"];
메서드 내의 코드가 작동합니다 (예쁘지 않습니다, 알고 있습니다 - 직장에서 멍청한 놈). 그것은 본질적으로 부끄럽지 않습니다. (액티브 코드가없는 것처럼) 호출하면 스플래시 화면에서 다른 것을 표시하기 전에 앱이 종료됩니다.
나는 이것이 머리 끄는 사람이라고 내기하고 있습니다 - 당신이 떨어 뜨릴 수있는 지식에 대해 많은 감사드립니다.
콘솔에 아무것도 없습니다. 그게 저를 왜곡 시켰습니다 ... 스프링 보드로 떨어졌습니다. "nil"을 반환해도 아무런 차이가 없습니다. 팁을 주셔서 감사합니다 ... – JSpread
그래서, 첫 번째 문제는 (물론) 메모리 관리였습니다 ... @interface의 일반적인 조정으로 고쳐졌습니다. 이제 메서드는 데이터를 반환하고 충돌이 발생합니다. 드로잉 보드로 돌아 가기! – JSpread