Gee*_*_SO 0 objective-c nsstring ios
我的一个函数中有一个POST请求块,我想更改块内的NSString对象的值.
我意识到通常可以只为变量添加前缀__block,但在我的情况下,希望通过直接引用其参数来更改NSString对象的值.
这是一个代码框架,带有相关注释.
- (void)getItemInformation:(NSString *)inputString{
//setup stuff
[manager POST:@"http://foo.com/iphone_item_string/"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//change inputString directly here
inputString = (NSString *)responseObject[0];
//this of course gives an error, but I'm
//unsure of how to use __block with a parameter
}
//foo
}
];
}
Run Code Online (Sandbox Code Playgroud)
和来自调用函数的一个段
currentEntryData.foo = "lorem";
NSString *retrieveString;
[self getItemInformation:retrieveString];
currentEntryData.bar = retrieveString;
currentEntryData.oof = "ipsum";
Run Code Online (Sandbox Code Playgroud)
你可以使用块
- (void)getItemInformationWithCallback:(void(^)(NSString *resultString))callback {
[manager POST:@"http://foo.com/iphone_item_string/"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// Here you call the callback block
//
NSString *newString = (NSString *)responseObject[0];
if (callback)
callback(newString)
}
}];
}
Run Code Online (Sandbox Code Playgroud)
这就是你如何获得字符串
[self getItemInformationWithCallback:^(NSString *resultString) {
NSLog(@"%@", resultString);
}];
Run Code Online (Sandbox Code Playgroud)