我发布了我尝试过的代码。
.h file
--------------
@property (nonatomic,retain) NSString *selectedChannelIDAlert;
@property (nonatomic,retain) NSString *pNewString;
.m file
-----------
@synthesize selectedChannelIDAlert,pNewString;
-(void)callfun{
NSArray *jsonData=[NSJSONSerialization JSONObjectWithData:GETReply options:kNilOptions error:nil];
selectedChannelIDAlert=[jsonData valueForKeyPath:@"items.snippet.resourceId.channelId"];
for (pNewString in selectedChannelIDAlert) {
NSLog(@"inside:%@",pNewString);
}
NSLog(@"outside:%@",pNewString);
}
My output is
--------
2013-12-24 17:38:01.590 TubeAlert[1230:907] inside:UCK376qNDlNZZDNHsnaWuTeg
2013-12-24 17:38:01.892 TubeAlert[1230:907] inside:UC6Ju00QIPQw2mCcUSrbyQKQ
2013-12-24 17:38:02.200 TubeAlert[1230:907] inside:UCshoKvlZGZ20rVgazZp5vnQ
2013-12-24 17:38:02.750 TubeAlert[1230:907] inside:UCVzbLPpZ_VMqDzUtmN3uU9A
2013-12-24 17:38:03.429 TubeAlert[1230:907] inside:UCo0vVHI3Oz7O5zTc6f-5lgw
2013-12-24 17:38:03.735 TubeAlert[1230:907] inside:UCqg2eLFNUu3QN3dttNeOWkw
2013-12-24 17:38:04.144 TubeAlert[1230:907] inside:UCrYnLkVfvVf0Qy0YOUQdk2A
2013-12-24 17:38:04.574 TubeAlert[1230:907] inside:UCCOIC6NrBFrVCcI7tcXNWpQ
2013-12-24 17:38:04.966 TubeAlert[1230:907] inside:UCcMTZY1rFXO3Rj44D5VMyiw
2013-12-24 17:38:05.374 TubeAlert[1230:907] inside:UC-wwO4iPfQtoNjbS792Mpzg
2013-12-24 17:38:05.685 TubeAlert[1230:907] inside:UCrSi7xopc9-SWRMydSq5e1Q
2013-12-24 17:38:06.090 TubeAlert[1230:907] inside:UC-lHJZR3Gqxm24_Vd_AJ5Yw
2013-12-24 17:38:06.500 TubeAlert[1230:907] inside:UCEe076nFuVobN0bAsXK7ICw
2013-12-24 17:38:06.913 TubeAlert[1230:907] inside:UCgSHGbs2oGoLItc-8y5hJ9g
2013-12-24 17:38:07.318 TubeAlert[1230:907] inside:UC-LPIU24bQXVljUXivKEeRQ
2013-12-24 17:38:07.730 TubeAlert[1230:907] outside:(null)
所以请告诉我哪里出错了,这样我就可以在for循环内外打印结果。谢谢
答案 0 :(得分:1)
当它超出范围时,你会尝试打印pNewString
。在for循环完成后它变为nil
。
答案 1 :(得分:1)
在for
- in
循环中将属性用作循环变量绝不是一个好主意。
在您的示例中,变量pNewString
的值由for
- in
循环控制,这意味着它仅在该循环的主体内有效。循环完成后,访问该值并不安全:在场景后面使用快速枚举来实现for
- in
循环可以将其设置为任意值,该值似乎为{{ 1}}用于Cocoa的nil
s。
为避免将来出现此问题,请考虑在循环范围内声明NSArray
变量,如下所示:
pNewString
如果您想从数组中获取最后一个值,请使用
for (NSString * NSString in jsonData) {
...
}