サーバーから情報を取得する小さなiOsアプリケーションを開発していて、非常に便利なNSURLSessionDataTaskが見つかりました。 まず、私は私が私の方法で呼び出さ@property (nonatomic, strong) NSMutableArray *objectArray;
を使用:メソッドブロック内のメソッド宣言から変数を使用するときに "変数が割り当てられない(__block型指定子がありません)"エラー
- (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];を試してください。 – SeanLintern88
ありがとう、それは今動作します! 気をつけて少し説明しますか?私はObj-C世界の初心者です! – DarthGalm
が答えとして追加されました:D – SeanLintern88