2017-01-17 77 views
0

您好我想轉換的NSString成NSMutable陣列,並在最後加入泰伯維我的字符串是這個轉換的NSString NSMutableArray的在tableview中

result=Vlad,Mama,Papa,Son 

我想做一些這

Anarray=(Vlad,Mama,Papa,Son) 

並添加到Tableview。可以anathing幫助me.What我做

NSArray *arr = [result componentsSeparatedByString:@","]; 
    dataArray=[[NSArray alloc]initWithObjects:arr ,nil]; 

並嘗試加入

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return [dataArray count]; 
} 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
static NSString*[email protected]"Cell"; 
    UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:cellid]; 
    if(cell==Nil){ 
     cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellid]; 
} 
    cell.textLabel.text=[dataArray objectAtIndex:indexPath.row]; 
    return cell; 
} 

但我有錯 enter image description here

+0

'dataArray中= [[NSArray中的alloc] initWithObjects:ARR,零];'=>'dataArray'將是隻有一個對象的NSArray,它是一個包含4個元素的數組。你的意思是'dataArray = [[NSArray alloc] initWithArray:arr,nil];'。並注意你的問題是關於MutableArray的,但是你不使用mutables,那麼dataArray'類是什麼? 'NSArray'的NSMutableArray,如果它是'NSMutableArray',則前面的一行應該會發出警告,它應該是'dataArray = [[NSMutableArray alloc] initWithArray:arr,nil];' – Larme

回答

0

您已經在「dataArray」中添加了「arr」元素。

萬一dataArray中是的NSMutableArray:

dataArray = [NSMutableArray arrayWithArray:arr]; 

萬一dataArray中是的NSArray:

datatArray = [NSArray arrayWithArray:arr]; 
0

可能是你沒有的alloc和init DataArray中。

您可以嘗試下面的代碼。

#import "ViewController.h" 
#import "MyTableViewCell.h" 

@interface ViewController() 

@end 

@implementation ViewController 
{ 
    NSMutableArray *arrData; 
} 
- (void)viewDidLoad { 
    [super viewDidLoad]; 


    NSString *str = @"objective c,swift,java"; 
    arrData = [[NSMutableArray alloc]initWithArray:[str componentsSeparatedByString:@","]]; 
    NSLog(@"%@",arrData); 

    // Do any additional setup after loading the view, typically from a nib. 
} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return arrData.count; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 
    cell.lblData.text = [arrData objectAtIndex:indexPath.row]; 
    return cell; 

} 
0

componentsSeparatedByString爲您提供了一個數組。這是你想要的。

[[NSArray alloc] initWithObjects:arr,nil]給你一個只包含一個元素的數組,一個包含你的字符串的數組。這是完全錯誤的。包含四個字符串的數組絕對不同於包含包含四個字符串的數組的數組。

dataArray.count將爲1 - 因爲有一個元素,它本身就是一個數組。而dataArray [0]將是該數組,而不是一個字符串。

1

componentsSeparatedByString返回數組,如果你想要一個可變數組,你可以使用下面的代碼。

NSArray *arrComponents = [str componentsSeparatedByString:@","]; 
NSMutableArray *arrmFilter = [[NSMutableArray alloc] init]; 
for(int i = 0; i < [arrComponents count] ;i++) 
{ 
    NSString *str = [arrComponents objectAtIndex:i]; 
    [arrmFilter addObject:str]; 
} 

我希望它有幫助。