我如何从Optional(Optional(“ myString”))中提取字符串?

问题描述 投票:-2回答:1

我正在收集数据并将其按以下临时数组进行排序:

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]);
}
swift sorting nsmutablearray optional
1个回答
0
投票

您的临时数据不是数组。因此,当您有临时工作日时。遍历每个对象,例如

      Var mutArray  : NSMutabaleArray
     For each in tempdata {
              mutArray.append(each.lastName)
      }
© www.soinside.com 2019 - 2024. All rights reserved.