繁体   English   中英

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

[英]How to copy NSMutableArray value into another NSMutableArray in iPhone?

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

这是我的代码:

我在AppDelegate页面中声明的数组名为jobarray ,现在我需要将jobarray的项目复制到下一个视图中,在那里我声明了pickerarray

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

但它返回错误消息,

['NSInvalidArgumentException', reason: '-[Coffee copyWithZone:]: unrecognized selector sent to instance 0x822d410']     where 'Coffee' is my sqlite3 object file.

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

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

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

NSMutableArray *newArray = [originalArray mutableCopy];

这仅保留第一个数组的对象,而无需弄乱实现复制协议。

[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
                 )

要从数组填充UIPickerView,您需要首先为UIPickeView数据源创建一个连接,然后再委托给ViewController。 您可以通过按正常方式CTRL从UIPickerView控件中拖入Interface Builder来完成此操作。

您还需要确保将代理协议包括在接口文件中。 像这样

@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中-如果内容是静态的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM