Swift 按文本对表格进行排序

Swift 按文本对表格进行排序,swift,uitableview,sorting,tableview,nsuserdefaults,Swift,Uitableview,Sorting,Tableview,Nsuserdefaults,我有一个名称,每个名称都会转到另一个包含表的视图控制器(同一个)。我需要根据名称来区分tableView中显示的数据 以下是我目前的代码: 当我点击一个名称时,它会进入我的表视图,但每个表都有相同的精确数据,并且不会因名称而改变。顺便说一下,finishading意味着向我的表中添加一段新数据(它应该只出现在一个名称上) 导入UIKit 类每个信息:UIViewController、UITableViewDelegate、UITableViewDataSource{ @IBOUTLE弱var a

我有一个名称,每个名称都会转到另一个包含表的视图控制器(同一个)。我需要根据名称来区分tableView中显示的数据

以下是我目前的代码: 当我点击一个名称时,它会进入我的表视图,但每个表都有相同的精确数据,并且不会因名称而改变。顺便说一下,finishading意味着向我的表中添加一段新数据(它应该只出现在一个名称上)

导入UIKit
类每个信息:UIViewController、UITableViewDelegate、UITableViewDataSource{
@IBOUTLE弱var addLogBtn:UIButton!
@IBVAR日志表:UITableView!
@IBOutlet弱var logBoxNew:UITextView!
var toDoData:NSDictionary=NSDictionary()
var logItems:NSMutableArray=NSMutableArray()
var oppoName=“”
覆盖功能视图显示(动画:Bool){
//加载所有而不是某些
让userDefaultsL:NSUserDefaults=NSUserDefaults.standardUserDefaults()
将itemListFromUserDefaultsL:NSMutableArray?=userDefaultsL.objectForKey(“itemList”)设为?NSMutableArray
if(itemListFromUserDefaultsL!=nil){
logItems=itemListFromUserDefaultsL!
}
self.logTable.reloadData()
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
self.view.endEditing(true)
}
func tableView(tableView:UITableView,cellForRowAtIndexPath:nsindepath)->UITableView单元格{
var logCell:UITableViewCell=self.logTable.dequeueReusableCellWithIdentifier(“logCell”)!作为UITableViewCell
var singleLogItem:NSDictionary=logItems.objectAtIndex(indexPath.row)as!NSDictionary
logCell.textlab?.text=singleLogItem.objectForKey(“itemLog”)作为?字符串
返回对数电池
}
func numberOfSectionsInTableView(tableView:UITableView)->Int{
//#警告可能不完整的方法实现。
//返回节数。
返回1
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回logItems.count
}
重写func viewDidLoad(){
super.viewDidLoad()
self.logTable.registerClass(UITableViewCell.self,forCellReuseIdentifier:“logcell”)
self.logTable.dataSource=self
//加载视图后执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
/*
//标记:-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
覆盖函数prepareforsgue(segue:UIStoryboardSegue,sender:AnyObject?){
//使用segue.destinationViewController获取新的视图控制器。
//将选定对象传递给新的视图控制器。
}
*/
//将此更改为opponentz平台和格式。但不是实际的软件
@iAction func addLogAction(发件人:AnyObject){
}
@iAction func Finishading(发送方:AnyObject){
var userDefaultsL:NSUserDefaults=NSUserDefaults.standardUserDefaults()
var singleLogItem:NSMutableArray?=userDefaultsL.objectForKey(“itemList”)as?NSMutableArray
变量数据集:NSMutableDictionary=NSMutableDictionary()
DataSet.setObject(logBoxNew.text,forKey:“itemLog”)
如果((singleLogItem)!=nil){//数据已可用
var newMutableListL:NSMutableArray=NSMutableArray();
对于dictL:singleLogItem中的AnyObject{
newMutableListL.addObject(dictL as!NSDictionary)
}
userDefaultsL.removeObjectForKey(“项目列表”)
newMutableListL.addObject(数据集)
userDefaultsL.setObject(newMutableListL,forKey:“itemList”)
}else{//第一项反对意见
userDefaultsL.removeObjectForKey(“项目列表”)
singleLogItem=NSMutableArray()
singleLogItem!.addObject(数据集)
userDefaultsL.setObject(singleLogItem,forKey:“itemList”)
}
userDefaultsL.synchronize()
//让userDefaultsL:NSUserDefaults=NSUserDefaults.standardUserDefaults()
将itemListFromUserDefaultsL:NSMutableArray?=userDefaultsL.objectForKey(“itemList”)设为?NSMutableArray
if(itemListFromUserDefaultsL!=nil){
logItems=itemListFromUserDefaultsL!
}
self.logTable.reloadData()
}
}

在调用
[tableView reloadData]
之前,您必须对
登录项中的文本进行排序:

这是用Objective-C编写的示例代码,因为我不熟悉Swift

[self.logItems sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    NSDictionary *dict1 = obj1;
    NSDictionary *dict2 = obj2;
    NSString *text1 = [dict1 objectForKey:@"itemLog"];
    NSString *text2 = [dict2 objectForKey:@"itemLog"];
    return [text1 compare:text2];
}];

不能帮助你回答问题,但你应该认真阅读
if let
guard
语句。他们会移除你的很多锅炉板。这个名字应该如何改变事情……这和排序有什么关系?@PhillipMills这个名字就像一个文件夹。我只希望每个名字都有某些东西。我只希望这些东西在以相同名称输入时首先显示出来,谢谢。虽然我试着把它放到一个swift转换器中,这样我就能理解它,它试着在id和非NULL之间加一个逗号。你能解释一下吗?顺便说一句,Xcode说它像与以前的值self.logItems.sortUsingComparator({(obj1:id\u Nonnull,obj2:id\u Nonnull)->NSComparisonResult in var dict1:[NSObject:AnyObject]=obj1 var dict2:[NSObject:AnyObject]=obj2 var text1:String=(dict1[“itemLog”]as!String)var text2:String=(dict2[“itemLog”]as!String)返回text1.compare(text2)})这是您从swift转换器得到的吗?
[self.logItems sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    NSDictionary *dict1 = obj1;
    NSDictionary *dict2 = obj2;
    NSString *text1 = [dict1 objectForKey:@"itemLog"];
    NSString *text2 = [dict2 objectForKey:@"itemLog"];
    return [text1 compare:text2];
}];