【发布时间】:2016-04-12 12:55:08
【问题描述】:
我正在开发一个从服务器检索信息的小型 iOs 应用程序,我发现了非常有用的 NSURLSessionDataTask。
首先我使用了@property (nonatomic, strong) NSMutableArray *objectArray;
我在我的方法中调用了:
- (void) createObjectsArrayFromUrl: (NSString *) url {
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
if(error) {
//error handling
}
dispatch_async(dispatch_get_main_queue(), ^{
NSMutableDictionary *jsonDataDictionary = [objectModel getJsonData];
self.objectArray = [objectModel arrayFromDictionary:jsonDataDictionary];
[[self collectionView] reloadData];
});
}];
[task resume];
}
一切都很顺利。 现在我想为更多数组创建一个通用方法,我想通过将数组传递给方法并在内部更新它来做到这一点,如下所示:
- (void) createObjectsArrayFromUrl: (NSString *) url inArray: (NSMutableArray *) objectArray{
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
if(error) {
//error handling
}
dispatch_async(dispatch_get_main_queue(), ^{
NSMutableDictionary *jsonDataDictionary = [objectModel getJsonData];
objectArray = [objectModel arrayFromDictionary:jsonDataDictionary];
[[self collectionView] reloadData];
});
}];
[task resume];
}
但它给了我下一行标题中的错误:objectArray = [objectModel arrayFromDictionary:jsonDataDictionary];,我不知道如何继续。
所以我的想法是,我不想像以前那样为我拥有的每个数组创建一个方法,而是想将数组作为变量传递并在方法中更新它。
如何做到这一点?
谢谢。
【问题讨论】:
-
而不是将 objectArray 分配给 [objectModel arrayFromDictionary:jsonDataDictionary];,尝试 [objecyArray removeAllObjects], [objectArray addObjectsFromArray:[objectModel arrayFromDictionary:jsonDataDictionary]];
-
谢谢,现在可以使用了!愿意解释一下吗?我是 Obj-C 世界的新手!
-
添加为答案:D
标签: ios objective-c