【问题标题】:How to convert an NSArray from Obj-C to Array in Swift?如何在 Swift 中将 NSArray 从 Obj-C 转换为 Array?
【发布时间】:2016-01-29 08:42:37
【问题描述】:

是的,我知道标题似乎有点明显,并且可以很容易地搜索到解决方案。我知道如何将一维 NSArray 转换为 Array,这很简单。

但是,这不是我的问题,因为我的 NSArray 不同。请看以下代码

NSArray *artists;

artists = @[@"Performed by: Legendary Group", @"Performed by: Ivan Cheong",
          @"Performed by: Tien Nguyen", @"", @[@"Performed by: DJ Happee From 
            Channel 3.3", @"Performed by: Adam Cease", @""], 
            @"Performed by: Music Between California and Summer", @""];

然后在cellForRowAtIndexPath,我正要这样访问它:

- (UITableViewCell *)tableView:(UITableView *)tableView 
   cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    if ( [ [artists[indexPath.section] objectAtIndex:indexPath.row] 
                isEqualToString:@""] )
    {
        ....
    }
}

您可以清楚地看到,我的 NSArray 在索引 4 处包含另一个数组。我需要这个以用于琐碎的目的。

我想知道是否可以将我的 NSArray 转换为 Swift 标准 Array 类型?

我已经尝试实现等效:

var temp = NSArray()

let artists = ["Performed by: Legendary Group", "Performed by: Ivan Cheong",   
           "Performed by: Tien Nguyen", "", ["Performed by: DJ Happee From 
        Channel 3.3", "Performed by: Adam Cease", ""], "Performed by: Music 
             Between California and Summer", ""]

temp = artists

这可以正常工作,但是,这不符合 Swift 2.0 的编码标准。

我想使用Array,但我不知道这是否可行?

谢谢

【问题讨论】:

    标签: objective-c arrays swift nsarray


    【解决方案1】:

    创建一个 AnyObjects 数组:

    let artists: [AnyObject] = ["Performed by: Legendary Group", "Performed by: Ivan Cheong",
        "Performed by: Tien Nguyen", "", ["Performed by: DJ Happee From Channel 3.3", "Performed by: Adam Cease", ""], "Performed by: Music Between California and Summer", ""]
    

    然后检查你的 tableView 函数中每个项目的类型并进行相应的处理:

     func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {
    
            switch artists.indexPath {
            case is String: //handle string
            case is NSArray: //handle array
            default: //trap other stuff
    
    
            }
           }
    

    【讨论】:

    • 请仔细看看我是如何初始化 NSArray artists 的。我已经在一个数组中定义了一个数组,但我无法将“那个”数组翻译成 Swift。如果它是一维数组,我很容易将它转换为 Swift,如您所展示的,但它不是一维的。为了清楚起见,我更新了我的问题。
    • 我不清楚为什么你在这里的数组中有一个数组。你能解释一下吗?
    • 我用它来显示事件时间表,但这与我的问题无关。
    • 已编辑以解决您的问题。希望这会有所帮助。
    • 没有办法通过Array类型转换直接实现这个吗?
    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多