2011-05-31 46 views
0

我有這個字符串a:10,b:xx,e:20,m:xy,w:30,z:50轉換刺在Objective-C構建

但是,我想將其轉換爲結構在Objective-C 鍵和值的變化...

(我希望應用程序將字符串轉換爲自動,不用手動結構)

在PHP中的結果將是:

$array = array(
     'a' => 10, // or 'a' => "10" (doesn't matter) 
     'b' => "xx", 
     'e' => 20, // or 'e' => "20" (doesn't matter) 
     'm' => "xy", 
     'w' => 30, // or 'w' => "30" (doesn't matter) 
     'z' => 50 // or 'z' => "50" (doesn't matter) 
); 

那麼,如何將該字符串轉換爲結構並獲得如PHP示例中的結果,但要在Objective-C中執行此操作?

請告訴我確切的代碼,我是新來的Objective-C :)

謝謝

回答

2

這PHP結構看起來更像是一本字典給我,所以我會假設它是。

NSString *s = @"a:10,b:xx,e:20,m:xy,w:30,z:50"; 
NSArray *pairs = [s componentsSeparatedByString:@","]; 
NSMutableArray *keys = [NSMutableArray array]; 
NSMutableArray *values = [NSMutableArray array]; 

for (NSString *pair in pairs) 
{ 
    NSArray *keyValue = [pair componentsSeparatedByString:@":"]; 
    [keys addObject:[keyValue objectAtIndex:0]]; 
    [values addObject:[keyValue objectAtIndex:1]]; 
} 

NSDictionary *dict = [NSDictionary dictionaryWithObjects:values forKeys:keys]; 
NSLog(@"%@", dict); 

這顯然很冗長,但它需要一些奇特的字符串操作。

輸出的樣子:

{ 
    a = 10; 
    b = xx; 
    e = 20; 
    m = xy; 
    w = 30; 
    z = 50; 
} 
+0

這就是爲什麼我討厭的Objective-C。對於來自PHP的每個人來說真的很痛苦 – dynamic 2011-05-31 12:27:49

+0

字符串操作不是Objective-C的強項(除了支持Unicode支持比其他選擇更好)。去任何語言將是一種'痛苦'。但它關於使用正確的工具來完成這項工作。但在iOS上時,它是大多數工作的唯一(理智)工具。 – 2011-05-31 12:45:39

+0

它不僅是字符串。做幾乎所有你需要的如此慷慨,如果你不習慣你會很快生氣 – dynamic 2011-05-31 12:55:57

1

您可以爆炸的字符串,再次爆炸的碎片,並把所有的成字典。這應該工作:下面的NSString的方法

NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
NSString *str = @"a:10,b:xx,e:20,m:xy,w:30,z:50"; 
NSArray *arr = [str componentsSeparatedByString:@","]; 
for (NSString *fragment in arr) { 
    NSArray *keyvalue = [fragment componentsSeparatedByString:@":"]; 
    [dict setObject:[keyvalue objectAtIndex:0] forKey:[keyvalue objectAtIndex:1]]; 
} 
+0

謝謝... :) – Andy 2011-05-31 11:33:18

1
NSString* myString = @"a:10,b:xx,e:20,m:xy,w:30,z:50"; 

使用。

- (NSArray *)componentsSeparatedByString:(NSString *)separator 

NSArray* myArray = [myString componentsSeparatedByString:@","]; 
NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary]; 
for (NSString* stringObj in myArray) 
{ 
    NSArray *myTemp1 = [stringObj componentsSeparatedByString:@":"]; 
    [myDictionary setObject:[myTemp1 objectAtIndex:0] forKey:[myTemp1 objectAtIndex:1]]; 
} 

現在myDictionary例如相當於$陣列

+0

謝謝... :) – Andy 2011-05-31 11:33:47