`[AnyObject]` 到 NSMutableArray

Posted

技术标签:

【中文标题】`[AnyObject]` 到 NSMutableArray【英文标题】:`[AnyObject]` to NSMutableArray 【发布时间】:2016-03-11 19:13:23 【问题描述】:

[AnyObject] 转换为NSMutableArray 时遇到问题。 试图将下面的代码转换为 swift2.0

 NSString *search = [searchBar.text stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    [[SpotifySDKAPI sharedInstance]searchSPTracks:self.session searchQuery:search completionHandler:^(SPTListPage *trackList, NSString *error) 
        NSArray* tempArray = trackList.items;
        self.spotifySearchResults = [tempArray mutableCopy];
        [self.tableView reloadData];
    ];

【问题讨论】:

只需替换这段代码 self.searchResults = (tempArray as!NSMutableArray).mutableCopy 不工作的人@SaurabhPrajapati 这是一个objective-c问题还是一个swift问题?为什么你有两个标签? 我提供了 obj-c 代码,但在转换时遇到了问题。@AlbertRenshaw 【参考方案1】:

一个 Swift 数组 不能 被转换为一个 NSMutableArray 但是出于所有意图和目的,一个 Swift 数组和 NSArray 是完全可以互换的。如果你想初始化一个NSMutableArray,你所要做的就是:

var mutableArray : NSMutableArray = NSMutableArray(array: swiftArray)

【讨论】:

【参考方案2】:

您可以将 [AnyObject] 声明为 VAR 而不是 LET,并且可以将对象附加到它,它将是可变对象。如果这是目的,则无需将 [AnyObject] 转换为 NSMutableArray。

【讨论】:

【参考方案3】:

你可以试试下面的答案

     let search: String = searchBar.text.stringByReplacingOccurrencesOfString(" ", withString: "%20")
     SpotifySDKAPI.sharedInstance().searchSPTracks(self.session, searchQuery: search, completionHandler: (trackList: SPTListPage, error: String) -> Void in
       var tempArray: [AnyObject] = trackList.items
       self.spotifySearchResults = tempArray.mutableCopy()
       self.tableView.reloadData()
     )

【讨论】:

【参考方案4】:

尝试通过将AnyObject 替换为NSMutableArray 来更改以下行:-

let tempArray : NSMutableArray = trackList.items

【讨论】:

以上是关于`[AnyObject]` 到 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

将对象添加到排序的 NSMutable 数组并回答索引路径

如何将NSMutable数组附加到现有文件中

过滤自定义对象的 NSMutable 数组

如何将 NSString 值设置为 NSMutable 字典?

`[AnyObject]` 到 NSMutableArray

NSUserDefaults NSMutable 数组未在会话之间保存