我想在一个对象中记录许多项目(用户名,照片和照片拍摄时间)。我试图使用三个不同的数组来做这个,它有点工作,但是因为我将它加载到tableview中它不是最好的方法来做到这一点。我正在考虑使用NSMutableDictionary,但我似乎无法做到这一点。任何帮助将不胜感激!
答案 0 :(得分:1)
您要做的是使用用户名,照片和照片时间字段创建用户实体(Swift / Objective-C类)。
创建用户,将它们放入数组中,然后在cellForRowAtIndexPath
创建表时读取它们。
@interface User : NSObject
@property (nonatomic, retain) NSString *userName;
@property (nonatomic, retain) NSString *photoURL;
@property (nonatomic, retain) NSString *photoTime;
@end
然后在代码中的某个位置创建用户......
NSMutableArray *usersArray= [[NSMutableArray alloc] init];
User *user= [[Useralloc] init];
user.userName=@"someUserName"
user.photoURL=@"http://somephotourl.com";
user.photoTime=@"1231232132121";
[usersArray addObject:user];
答案 1 :(得分:1)
你可以这样做。
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:
@"Jone",@"UserName",
@"Jone.png",@"Photo",
[NSDate date],@"Time",nil];
NSMutableArray *userArray = [[NSMutableArray alloc] init];
[userArray addObject:dic];
//NSLog(@"%@",userArray);
for (int i=0; i<userArray.count; i++) {
NSDictionary *userDictionary = [userArray objectAtIndex:i];
NSLog(@"UserName:%@",[userDictionary valueForKey:@"UserName"]);
NSLog(@"Photo:%@",[userDictionary valueForKey:@"Photo"]);
NSLog(@"Time:%@",[userDictionary valueForKey:@"Time"]);
}
注意:我认为你需要使用NSDictionary的“NSMutableArray”。如果您所有的用户属性(用户名,照片,时间......)都是不可预测的,那么您只需要使用NSMutableDictionary。
答案 2 :(得分:1)
UITableView
背后的数据结构通常是NSArray
或某种列表。数组中的每个对象都应该代表表中的一行
遵循此模式,您的结构应如下所示:
var users = [User]()
struct User {
let name: String
let photo: UIImage
let date: NSDate
}
// This struct could also be a dictionary
var user = [String: AnyObject]()
user["name"] = ..
user["photo"] = ..
user["date"] = ...
实例化User
个对象,并在适当时将它们添加到users
数组中
您的UITableView
应该找到正确的用户并相应地使用dataSource
方法更新单元格:
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = .. // Dequeue cell
let user = users[indexPath.row] // Get the user for this row
cell.textLabel.title = user.name // Update cell properties
// etc..
// OR using a dictionary
cell.textLabel.title = user["name"]
// etc..
return cell