我正在收集数据并将其按以下临时数组进行排序:
let tempData = InternalContactsHandler.sharedBuffer()?.contacts().sorted(by: {(($0) as AnyObject).lastName < (($1) as AnyObject).lastName})
tempData.count
的打印返回50个值。
然后我尝试将其放入新的NSMutableArray
:
contactsInternalArray = tempData as? NSMutableArray
但是现在崩溃时说contactsInternalArray
为零。
尝试打印tempData?[0] as AnyObject).lastName
返回Optional(Optional("theCorrectString")
现在,排序显然有问题。它看起来很乱,我不知道为什么它需要AnyObject
而不是String
。它不允许我这样排序:{ $0.lastName as String < $1.lastName as String}
或我尝试保存的其他方式。
所以,有没有一种方法可以以正确的方式对此进行实际排序,或者使我的字符串周围的可选项Webb松开?
EDITcontacts()
从如下所示的class
返回数据:
@interface Contact : NSObject{
NSUInteger contactId;
NSString *firstName;
NSString *lastName;
BOOL isWithHeld;
NSString *mobilePhone;
NSString *workPhone;
NSString *homePhone;
NSString *company;
}
我正在用objective-c
调用旧的swift
代码,这就是为什么我使用NSMutableArray
。
整个代码看起来像这样。让我知道您是否需要更多代码:
func contactsCallback() {
let tempData = InternalContactsHandler.sharedBuffer()?.contacts().sorted(by: {(($0) as! Contact).lastName < (($1) as! Contact).lastName})
contactsInternalArray = tempData as? NSMutableArray
tableViewOutlet.reloadData()
}
最后,contacts
从此处获取其数据:
-(void)refreshContactList:(NSArray*)newContacts{
NSLog(@"😠%lu Refreshdata", (unsigned long)[contacts count]);
isRefreshingContactList = YES;
contacts = newContacts;
contactDictKeyedOnId = [[NSMutableDictionary alloc] initWithCapacity:100];
for (Contact *c in newContacts) {
[contactDictKeyedOnId setObject:c forKey:[NSNumber numberWithInteger:c.contactId]];
}
contactDictKeyedOnExtension = [[NSMutableDictionary alloc] initWithCapacity:100];
for (InternalContact *c in newContacts) {
if(c.extension)
[contactDictKeyedOnExtension setObject:c forKey:c.extension];
else {
ALog(@"Internal contact '%@' has no extension", c);
}
}
isRefreshingContactList = NO;
NSLog(@"😠%lu Refreshdata", (unsigned long)[contacts count]);
}
您的临时数据不是数组。因此,当您有临时工作日时。遍历每个对象,例如
Var mutArray : NSMutabaleArray
For each in tempdata {
mutArray.append(each.lastName)
}