2017-06-09 16 views
0

Objective-CでJSONを解析する必要があります。したがって、正常に解析した後。私はそれぞれのすべての値の文字列形式で、これを変換する必要がありJSON出力をNSStringとして取得する方法

-(instancetype)initWithDict:(NSDictionary *)dict { 
    self = [super init]; 
    if (self) { 

     if ([dict isKindOfClass:[NSDictionary class]]) { 
      self.allKeysArray = [dict allKeys]; 

if ([self.allKeysArray containsObject:@"nDetail"]) { 

       if ([dict valueForKey:@"nDetail"]) { 

_tempNutrientArray = [[[dict valueForKey:@"nDetail"] valueForKey:@"nTypeCode"] valueForKey:@"value"]; 
     } 
    } 
} 

NSLog(@"N Array : @%@", _tempNutrientArray); 

} 

以下は私のコードです。

マイ出力:

N Array : @(
    "ENER-", 
    FAT, 
    FASAT, 
    CHOAVL, 
    "SUGAR-", 
    "PRO-", 
    NACL 
) 

必要な出力:

N Array : @("ENER-","FAT","FASAT","CHOAVL","SUGAR-","PRO-","NACL") 

だから私は、文字列形式に変換する方法。私を助けてください。文字列

NSString * myString = [_tempNutrientArray componentsJoinedByString:@""]; 

に配列を変換

+0

変換配列をバックJSON文字列に? – Bilal

+0

配列を文字列に変換したいか、文字列の配列オブジェクトを変換したいのですか? –

+0

私は配列内のすべての要素を文字列にする必要があります。このよう – aadityaa

答えて

0

あなたは文字列の間のいずれかの文字があなたのケースではcomponentsJoinedByString:@"GIVE_IT_HERE"

+0

のような値を使用している間は、 "FAT"、 "FASAT"、 "CHAOVL"、 "SUGAR-"、 "PRO-"、 "NACL") – aadityaa

1

にそれを与えるしたい場合は、その使用後にあなたの応答から、あなたの文字列全体を格納する1つの変数を作成しています私のコード。

NSString *tempstring = @"ENER- FAT FASAT CHOAVL SUGAR- PRO- NACL"; 
NSArray *arr = [tempstring componentsSeparatedByString:@" "]; 
NSLog(@"%@",arr); 
NSLog(@"First value : %@",[arr objectAtIndex:0]); 
NSLog(@"Second value : %@",[arr objectAtIndex:1]); 
NSLog(@"Third value : %@",[arr objectAtIndex:2]); 

これで、すべての文字列が必要な配列になっているかどうかを確認します。

出力:

(
    "ENER-", 
    FAT, 
    FASAT, 
    CHOAVL, 
    "SUGAR-", 
    "PRO-", 
    NACL 
) 

First value : ENER- 
Second value : FAT 
Third value : FASAT 
+0

はい、これを使用しました。NSMutableArray * arr = [_tempNutrientArray componentsJoinedByString:@ ""]; NSStringに初期化されている互換性のないポインタ型の警告を受け取りました。 – aadityaa

+0

@aadityaaはNSMubtaleArrayの代わりにNsarrayを使用します。あなたはそれを手に入れました。 –

+0

はい、完了しましたが、同じ警告が存在します。 – aadityaa

2

あなたは適切な文字列としてすべてのオブジェクトを作るために全体の配列を列挙する必要があります。これは高速な操作である可能性があります。あなたはそれを取得しているときに文字列に変換

より良いarrNewは、文字列の配列になります

NSArray *arr = [NSArray arrayWithObjects:@"",@"", nil]; 
NSMutableArray *arrNew = [NSMutableArray new]; 

[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    NSString *plainstr = [NSString stringWithFormat:@"%@",obj]; 
    [arrNew addObject:plainstr]; 
}]; 

..:

あなたはこのコードを使用することができます。

0

あなたが必要とする必須の出力として、あなたは試すことができます:

-(instancetype)initWithDict:(NSDictionary *)dict { 
    self = [super init]; 
    if (self) { 

     if ([dict isKindOfClass:[NSDictionary class]]) { 
      self.allKeysArray = [dict allKeys]; 

if ([self.allKeysArray containsObject:@"nDetail"]) { 

       if ([dict valueForKey:@"nDetail"]) { 

_tempNutrientArray = [[[dict valueForKey:@"nDetail"] valueForKey:@"nTypeCode"] valueForKey:@"value"]; 
     } 
    } 
} 

NSString *finalString = @""; 
[_tempNutrientArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    NSString *plainstr = [NSString stringWithFormat:@"%@",obj]; 
    if (plainstr) 
     finalString = [finalString stringByAppendingString:plainstr]; 
}]; 

NSLog(@"N Array : @%@", finalString); 

} 
関連する問題