如何将NSMutableArray值复制到iPhone中的另一个NSMutableArray?

时间:2012-08-03 06:31:59

标签: iphone sqlite nsmutablearray

这里,我的NSMutableArray页面中有一个AppDelegate,当用户在数据库中添加值(用户名)时,数组将会更新。现在我希望数组值(用户名)显示在下一个视图中,以便在Picker View中列出。我知道有更多相关的问题,但我找不到解决方案。任何帮助表示赞赏。

这是我的代码:

我在AppDelegate页面中声明的数组,名为jobarray,现在我需要将jobarray中的项目复制到下一个视图中,我已声明{{1} }。

pickerarray

但它返回错误消息,

pickerarray = [[NSMutableArray alloc] initWithArray:appDelegate.jobarray copyItems:YES];

3 个答案:

答案 0 :(得分:1)

您的SQLite对象不符合NSCopying协议 - 您尚未实现

- (id)copyWithZone:(NSZone *)zone;

方法。您可以实现此方法以使对象可复制,但如果您只需要复制进行显示,则最好只复制数组本身

NSMutableArray *newArray = [originalArray mutableCopy];

这只保留了第一个数组的对象,不需要实现复制协议。

答案 1 :(得分:0)

[arr1 initWithObjects:@"1",@"2", nil];

毫无意义,你可能想要的是使用NSMutableArray:

NSArray *arr1 = [NSArray arrayWithObjects:@"1",@"2", nil];
NSMutableArray *arr2 = [arr1 mutableCopy];

NSLog(@"arr1: %p, %@", arr1, arr1);
NSLog(@"arr2: %p, %@", arr2, arr2);

NSLog输出:

arr1: 0x7924c50, (
                 1,
                 2
                 )
arr2: 0x7924f00, (
                 1,
                 2
                 )

答案 2 :(得分:-1)

要从数组填充UIPickerView,首先需要为UIPickeView数据源和委托创建一个连接回ViewController。您可以通过CTRL以正常方式在界面生成器中拖动来实现此操作 - 从UIPickerView控件。

您还需要确保将委托协议包含在您的接口文件中。所以像这样;

@ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate> {  

}

然后,您需要在实现文件中为UIPickerView的填充创建委派方法。

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
 {
    //One column
    return 1;
 }

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
 {
   //set number of rows
     return myArrayObject.count;
 }

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
 {
     //set item per row
     return [myArrayObject objectAtIndex:row];
 }

这假设myArrayObject已在其他地方正确声明并填充。即在viewDidLoad中 - 如果内容是静态的。