我有一个名为Item的对象的NSMutableArray。我需要能够在数组中获得给定项本身的索引。
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才能获得项的索引
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获取的数据实例化一个动态数字页。我不认为遵循那篇教程是那么糟糕。如果你能提供一些东西,贝特(我知道它不是真正的主题),这将是有帮助的
发布于 2018-04-17 08:13:37
首先,正如多次提到的,根本不要在Swift中使用NSMutable...集合类型。
要能够使用index(of,结构必须采用Equatable。
在SWIFT4.1中,根据SE-0185合成可均衡化和可连接性的一致性,==算子是通过采用Equatable来合成的。
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) // 0https://stackoverflow.com/questions/49872550
复制相似问题