2015-09-30 2 views
-1

Я использую следующий код для разделения строки на несколько строк и получить ошибкуразделителей в строке с запятой

NSArray *arr = [randomStr componentsSeparatedByString:@";"]; 

Ошибка:

-[__NSDictionaryM componentsSeparatedByString:]: unrecognized selector sent to instance 0x1758f230 -[__NSDictionaryM componentsSeparatedByString:]: unrecognized selector sent to instance 0x1758f230

Это мой образец данных

NSArray *data = { 
    { 
    name = "name1"; 
    address = "RWP"; 
    ID = 0; 
}, 
    { 
    name = "name2"; 
    address = "RWP"; 
    ID = 1; 
}, 
    { 
    name = "name3"; 
    address = "RWP"; 
    ID = 2; 
},} 

NSString *randomStr = data[0]; 

Что не так в моем коде

+2

randomStr не строковый объект, который вы можете проверить с помощью 'isKindOfClass' метода. –

+0

randomStr может быть любой строкой .. это не словарь – Tahir

+0

В этой ошибке четко указано, что 'randomStr' - это изменяемый словарь (' NSMutableDictionary'). – rmaddy

ответ

4

У вас есть массив словарей, а не строками. Разделить нечего.

Вы хотите что-то вроде этого:

NSDictionary *dict = data[0]; 
NSString *name = dict[@"name"]; 
NSString *address = dict[@"address"]; 
+0

ok Спасибо, я понял, что было проблемой, спасибо за ваш пример кода, это облегчило мою работу – Tahir

1

Похоже, что переменная randomStr является MutableDictionary. Вот почему он не работает.

вот мой тест:

NSString *foo = @"BAR;FOO;VAR"; 
NSArray *arr = [foo componentsSeparatedByString:@";"]; 
NSLog(@"%@", arr); 

Thise Журналы:

BAR, 
FOO, 
VAR 

EDIT: словарь в массив:

NSMutableDictionary *dict = @{@"aKey1" :@"BAR", 
           @"aKey2" :@"FOO", 
           @"aKey3" :@"VAR"}.mutableCopy; 

NSMutableArray *array = [[NSMutableArray alloc] init]; 

for (NSString *key in dict) { 
    [array addObject:dict[key]]; 
} 
NSLog(@"%@",array); 

Это Logs:

BAR, 
FOO, 
VAR 
+0

ok so как я полагаю, чтобы разделить MutableDictionary на ";" – Tahir

+0

Итак, у вас есть NSMutableDictionary, и вам нужен массив, в котором указано значение этого словаря? Не могли бы вы разместить свой код для заполнения словаря? В противном случае вам нужно зацикливать словарь и putt каждое значение как новый объект в MutableArray. –

+0

Я добавил словарь к элементу массива в своем ответе –

1

Вы должны быть уверены, что randomStr как NSString. Вы можете проверить, как

if ([randomStr isKindOfClass:[NSString Class]]) { 

    NSArray *arr = [randomStr componentsSeparatedByString:@";"]; 
} 
+0

isn't функция «componentsSeparatedByString» появляется только в NSString? –