2014-02-16 20 views
0
[_weatherAPI currentWeatherByCoordinate:CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude) withCallback:^(NSError *error, NSDictionary *result) { 
    downloadCount++; 
    if (downloadCount > 1) 
     if (error) { 
     } 

    _saveTemp = result[@"main"][@"temp"]; 

在此方法中,我將temp保存到NSString中。在存儲方法之外訪問屬性

@property (nonatomic) NSString *saveTemp; 

如何訪問這個方法超出這個NSString的價值?比如我試圖做到這一點

- (void)viewDidLoad 
{ 
    NSLog(@"%@", _saveTemp); 
} 

回答

0

你試過self.saveTemp

你也應該讓物業strong

@property (strong, nonatomic) NSString *saveTemp; 
0

你正在做什麼是完全正確的,只是在_weatherApi ......事情沒有被調用viewDidLoad中的時間,因此_saveTemp未初始化。你應該把它與_weather東西[自我setSaveTemp:...]爲了有得當保留。

+0

你能不能給一個代碼示例嗎?我設置了[self saveTemp],但不確定要從那裏做什麼? – joshuahornby10

+0

變化 '_saveTemp =結果[@ 「主」] [@ 「TEMP」];'爲[自setSaveTemp:結果[@ 「主」] [@ 「TEMP」]];直接設置爲後盾伊娃繞過該編譯器合成爲你的二傳手,這將有一個藏在它留住。 – Jef

+0

和移動日誌嘗試後在生命週期中,在那裏你知道這另一種方法有時間觸發,也許viewDidAppearAnimated:不是didLoad – Jef

0

嘗試創建你的「複製」

@property (copy, nonatomic) NSString *saveTemp; 

財產和嘗試調用二傳手

[self setSaveTemp:result[@"main"][@"temp"]]; 

-(void)setSaveTemp:(NSString *)saveTemp { 
    _sateTemp = saveTemp; 
} 
+0

好吧,我看,我怎麼然後調用saveTemp鑑於沒有負荷?作爲調用NSLog(@「%@」,_saveTemp);返回null – joshuahornby10

+0

@ joshuahornby10如果你在一個視圖中工作,那麼在viewDidLoad中它將永遠爲零,因爲你所有的方法都在viewDidLoad之後調用,但是你可以在viewDidLoad中調用方法,在那裏你將smth保存爲Temp並且在調用日誌之後將你的Temp放在viewDidLoad中。我希望你明白我的英語:) –

+0

此setter你寫不實際執行「複製」,所以宣稱「複製」,你原型標頭中的財產什麼都不做,除了誤導讀者 – Jef