簡體   English   中英

如何在Swift中將NSArray從Obj-C轉換為Array?

[英]How to convert an NSArray from Obj-C to Array in Swift?

是的,我知道標題似乎很明顯,可以輕松地找到解決方案。 我知道如何將一維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 ,但是不知道是否可行?

謝謝

創建一個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


        }
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM