Я установил значение моего NSString, называемого «fid», в responseObject (см. Ниже). responseObject возвращает данные, которые я хочу, когда NSLog'd, но по какой-то причине, когда я NSLog фид дальше, он пуст. Я что-то упускаю? Смотрите код:Значение NSString возвращает null, но не знаете почему?
.h
@property (nonatomic, assign) NSString *fid;
.m
[DIOSFile fileSave:file success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"File uploaded!");
[file setObject:[responseObject objectForKey:@"fid"] forKey:@"fid"];
[file removeObjectForKey:@"file"];
fid = [responseObject objectForKey:@"fid"];
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed to upload file!");
}];
NSDictionary *bodyValues = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:_itemDescrip.text, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *languageDict = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:bodyValues] forKey:@"und"];
[nodeData setObject:languageDict forKey:@"body"];
[nodeData setObject:@"storage_item" forKey:@"type"];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject: [NSString stringWithFormat:@"%@", fid] forKey:@"fid"];
NSLog(@"%@", fid);
NSDictionary *fidLangDict = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:dict] forKey:@"und"];
[nodeData setObject:fidLangDict forKey:@"field_photo"];
[DIOSNode nodeSave:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Node saved!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Node did not save!");
}];
Я не знаком с классом DIOSFile, но если время жизни этого объекта ответа короче, чем время жизни свойства fid, вы получите в свои руки зомби (указатель на нераспределенное пространство). Я бы изменил назначение на сильный в fid и сделал [[responseObject objectForKey: @ "fid"] copy]. –
FYI - опасно использовать 'assign' для свойства указателя объекта. Предполагая, что вы используете ARC, используйте 'strong'. Или, если у вас действительно есть веская причина и полностью понять последствия, используйте «слабый». 'assign' следует использовать только для примитивных типов. – rmaddy
@JoelMurphy Пробовал это; no dice:/ – Brittany