我正在开发一个iOS应用程序,用于解析csv文件中的数据。我能够成功解析数据,将数据存储到数组中,然后将数组的内容打印到控制台。但是,我无法在迭代的块之外查看数组的内容。这是我正在使用的代码:
#import "TestData.h"
@interface TestData ()
@property (nonatomic, strong) NSMutableArray *array;
@end
@implementation TestData
- (void) addData {
NSString *file = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"csv"];
[self.array = [[NSMutableArray alloc] init];
__weak TestData *wSelf = self;
[CSVParser parseCSVIntoArrayOfArraysFromFile:file
withSeparatedCharacterString:@","
quoteCharacterString:nil
withBlock:^(NSArray *array, NSError *error) {
__strong TestData *sSelf = wSelf;
[sSelf.array setArray: array];
//self.array = array;
//NSLog(@"%@", self.array);
}];
NSLog(@"%@", self.array);
}
我想在块之外使用self.array的全部内容。谁能看到我做错了什么?
感谢所有回复的人。
答案 0 :(得分:0)
试试这个:
self.array = [[NSMutableArray alloc] init];
__weak MyViewController *wSelf = self;
[CSVParser parseCSVIntoArrayOfArraysFromFile:file
withSeparatedCharacterString:@","
quoteCharacterString:nil
withBlock:^(NSArray *array, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
__strong MyViewController *sSelf = wSelf;
[sSelf doSomethingWithMyData:array];
}
}];
此外,如果您的解析器是异步的,则在解析数据实际完成之前,您可能正在打印块外部的日志语句。
此外,通过在块内使用弱和强引用,可以避免保留周期。