首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT4.1使用NSMutableArray和索引(of:)意外的结果

SWIFT4.1使用NSMutableArray和索引(of:)意外的结果
EN

Stack Overflow用户
提问于 2018-04-17 07:47:42
回答 1查看 276关注 0票数 0

我有一个名为Item的对象的NSMutableArray。我需要能够在数组中获得给定项本身的索引。

代码语言:javascript
复制
import UIKit
import Foundation

struct Item {
    var name: String
    var message: String
}

var itemsArray = NSMutableArray()

let item = Item (name: "name", message: "mex")
let item2 = Item (name: "name2", message: "mex2")

var items : [Item] = [item, item2]

itemsArray.addObjects(from: items)

itemsArray.index(of: item)

我得到9223372036854775807作为最后一行的结果。

我遗漏了什么?

编辑:我正在学习UIPageViewController教程,其中需要NSMutableArray才能获得项的索引

代码语言:javascript
复制
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {

if let currentPageViewController = viewController as? SinglePageViewController, let currentItem:Item = currentPageViewController.item {

    let currentIndex = itemsArray.index(of: currentItem)
    return viewControllerAtIndex(index: currentIndex - 1)
}
return nil
}

取自https://grokswift.com/pageviewcontroller/

edit2:对不起,伙计们,我不想惹恼每个人,实际上,我只是在学习PageViewController,它根据从JSon获取的数据实例化一个动态数字页。我不认为遵循那篇教程是那么糟糕。如果你能提供一些东西,贝特(我知道它不是真正的主题),这将是有帮助的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 08:13:37

首先,正如多次提到的,根本不要在Swift中使用NSMutable...集合类型。

要能够使用index(of,结构必须采用Equatable

在SWIFT4.1中,根据SE-0185合成可均衡化和可连接性的一致性==算子是通过采用Equatable来合成的。

代码语言:javascript
复制
struct Item : Equatable
{
    var name: String
    var message: String
}

let item = Item (name: "name", message: "mex")
let item2 = Item (name: "name2", message: "mex2")

var items = [item, item2]

items.index(of: item) // 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49872550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档