2016-08-26 10 views
3

の出力を取得するわけではない私は1つの方法initWithNSDictionaryありますなぜ私はNSStringの

- (id) initWithNSDictionary:(NSDictionary*)countryInfo_ 
{ 
    self = [super init]; 
    if(self) { 
     NSLog(@"Country Info = %@",countryInfo_); 
      self.code = [countryInfo_ valueForKey:@"countryCode"]; 
      self.name = [countryInfo_ valueForKey:@"countryName"]; 
      self.continent = [countryInfo_ valueForKey:@"continentName"]; 
      self.region = [countryInfo_ valueForKey:@"region"]; 
      self.currencyCode = [countryInfo_ valueForKey:@"currencyCode"]; 
      self.population = [countryInfo_ valueForKey:@"population"]; 
    } 
    NSLog(@"code %@", code); 

    return self; 
} 

私がすることで、このメソッドにアクセスしています:

:私はによってラベルで、この値を印刷していた後

Country *country = [[Country alloc] initWithNSDictionary:jsonObject]; 

countryCode.text = [NSString stringWithFormat:@"Country Code = %@", country.code]; 

コンソールにログインすると、次のように表示されます。

NSLog(@"Currency Code = %@", currencyCode.text); 

Currency Code = Currency Code = (
    BRL 
) 

とラベルの実際のデバイスの画面上で私は取得しています:

Currency Code = BRL 

CountryInfo_:

Country Info = (
     { 
     areaInSqKm = "8511965.0"; 
     capital = "Bras\U00edlia"; 
     continent = SA; 
     continentName = "America meridionale"; 
     countryCode = BR; 
     countryName = Brasile; 
     currencyCode = BRL; 
     east = "-32.392998"; 
     fipsCode = BR; 
     geonameId = 3469034; 
     isoAlpha3 = BRA; 
     isoNumeric = 076; 
     languages = "pt-BR,es,en,fr"; 
     north = "5.264877"; 
     population = 201103330; 
     south = "-33.750706"; 
     west = "-73.985535"; 
    } 
) 

と国コードが印刷さ

Country Name = (

は、私のような出力が欲しいです:

code (
    BR 
) 

なぜこれが起こっていますか?

+1

通貨は、配列の形で来て渡してみ

Country *country = [[Country alloc] initWithNSDictionary:jsonObject]; 

を渡す..あなたはそれがアプリのクラッシュの原因となる文字列 –

答えて

1

のようなものを試してみてください

currencyCode.text = [[[currencyCode.text stringByReplacingOccurrencesOfString:@"\n" withString:@""] stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""];` 

これを試してみて、これは便利です願っています。

+0

ありがとうございます。私はこれを加えて必要な出力を得ました。 @jagdish – KAR

+0

これは本当の解決策である「小さなハック」です。情報を取得するためにオブジェクトの「記述」を変更するのは良い解決策ではありません。説明を用いて – Larme

+0

としたが、出力は上記と同じであった。だから私は新しい方法@Larmeを見つけなければならなかった – KAR

0

私はCURRENCYCODEは、改行文字でNSString
を持っていると思う。この

self.code = [[countryInfo_ objectAtIndex:0] objectForKey:@"countryCode"]; 
self.name = [[countryInfo_ objectAtIndex:0] objectForKey:@"countryName"]; 
self.continent = [[countryInfo_ objectAtIndex:0] objectForKey:@"continentName"]; 
self.region = [[countryInfo_ objectAtIndex:0] objectForKey:@"region"]; 
self.currencyCode = [[countryInfo_ objectAtIndex:0] objectForKey:@"currencyCode"]; 
self.population = [[countryInfo_ objectAtIndex:0] objectForKey:@"population"]; 
+0

に変更する必要があります。 @koushik Gounder – KAR

+0

このNSLog(@ Country Info =%@ "countryInfo _);とNSLog(@"コード%@ "コード);' print – Koushik

+0

これも試してみてください 'self.code = [ NSString stringWithFormat:@ "%@"、[countryInfo_ objectForKey:@ "countryCode"]]; countryCodeが数字の場合はNSStringとしてself.codeを作成します – Koushik

1

実際のCountryInfo_は、NSDictionaryではなく配列です。だからではなく、

Country *country = [[Country alloc] initWithNSDictionary:jsonObject[0]]; 
関連する問題