![](/img/trans.png)
[英]How to copy the contents of NSMutableArray to another NStArray in iphone app?
[英]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.