我有一个程序,在两个不同的窗口上有2个表。一个表保存客户名称和ID号,另一个表保存项目名称和编号。它们都存储在一个数组中,也存储在.plist文件中。
我想要做的是在第三页上会有一个销售页面,用户将在其中输入客户ID和项目ID,程序应该能够找到名称并将其显示给标签。我不知道从哪里开始走。有人可以帮忙或告诉我该怎么办吗?我可以上传任何人想要查看的代码,但由于我不知道从哪里开始,我不知道要上传什么 这是customer.h文件
#import <Foundation/Foundation.h>
NSString *name;
int memberNumber;
@interface Customer : NSObject <NSCoding>
{
NSString *name;
int memberNumber;
}
@property (nonatomic, copy) NSString *name;
@property int memberNumber;
@end
这是customer.m
#import "Customer.h"
@implementation Customer
@synthesize name;
@synthesize memberNumber;
-(id) init
{
self = [super init];
if(self)
{
name = @"Test";
int i = arc4random()%1000000000000000000;
if (i<0)
{
memberNumber = i*-1;
}
else
memberNumber = i;
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super init])
{
self.name = [decoder decodeObjectForKey:@"name"];
self.memberNumber = [decoder decodeIntForKey:@"memberNumber"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:name forKey:@"name"];
[encoder encodeInt:memberNumber forKey:@"memberNumber"];
}
-(void)dealloc
{
[name release];
[super dealloc];
}
@end
这是tableView.h文件
#import <Foundation/Foundation.h>
#include <stdlib.h>
NSString *filepath;
@interface tableViewData : NSObject <NSTableViewDataSource>
{
@private
IBOutlet NSTableView *tableView;
NSMutableArray *list;
NSString *filepath;
}
-(IBAction)add:(id)sender;
-(IBAction)remove:(id)sender;
@end
这是tableView.m文件
#import "tableViewData.h"
#import "Customer.h"
@implementation tableViewData
-(void)awakeFromNib{
filepath = @"/Users/Desktop/CustomerNames.plist";
if ([[NSFileManager defaultManager]fileExistsAtPath:filepath])
{
NSMutableArray *archive = [NSKeyedUnarchiver unarchiveObjectWithFile:filepath];
list = archive;
}
else
list=[[NSMutableArray alloc]init];
}
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return [list count];
}
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
Customer *Customer = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
return [Customer valueForKey:identifier];
}
-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn: (NSTableColumn *)tableColumn row:(NSInteger)row
{
Customer *Customer = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
[Customer setValue:object forKey:identifier];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:list];
[data writeToFile:filepath options:NSDataWritingAtomic error:nil];
}
-(IBAction)add:(id)sender
{
[list addObject:[[Customer alloc]init]];
[tableView reloadData];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:list];
[data writeToFile:filepath options:NSDataWritingAtomic error:nil];
for (id name in list)
NSLog(@"obj: %@", name);
NSLog (@"array:%@",list);
}
-(IBAction)remove:(id)sender
{
NSInteger row = [tableView selectedRow];
if (row != -1)
{
[list removeObjectAtIndex:row];
}
[tableView reloadData];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:list];
[data writeToFile:filepath options:NSDataWritingAtomic error:nil];
}
-(void)dealloc
{
[super dealloc];
}
@end
希望这会有所帮助
(OS X的xcode 4.2.1)
答案 0 :(得分:0)
例如:
if([myNumber isKindOfClass:[NSNumber class]])
{
//do something here
}
检查对象myNumber是否为NSNumber类Object。你当然可以使用你想要的任何课程。阅读documentation
答案 1 :(得分:0)
如果您加载到表中的项目与表格中的订单相同,则可以使用
[myArray objectAtIndex:[indexPath row]];
然后使用可以使用您需要的数组变量。
答案 2 :(得分:0)
首先是代码:
-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn: (NSTableColumn *)tableColumn row:(NSInteger)row
{
Customer *Customer = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
[Customer setValue:object forKey:identifier];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:list];
[data writeToFile:filepath options:NSDataWritingAtomic error:nil];
}
将客户*客户更改为客户*客户始终使用该方式。
然后使用该方法来了解选择哪一行。在您的情况下选择哪个客户。我从您的代码中了解到,每一行都有一个客户,而这些客户都在您的列表数组中。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//with this code you can get the selected customer from your list,
Customer *customer=[list objectAtIndex:[indexPath row]];
}
然后您就可以达到客户的价值。