我知道,希望类NSIndexPath处理具有数组的数组.

我有这个代码:

import UIKit

class ViewController: UIViewController,UITableViewDataSource {

    let devCourses = [
        ("iOS App Dev with Swift Essential Training","Simon Allardice"),("iOS 8 SDK New Features","Lee Brimelow"),("Data Visualization with D3.js","Ray Villalobos"),("Swift Essential Training",("Up and Running with AngularJS",("MysqL Essential Training","Bill Weinman"),("Building Adaptive Android Apps with Fragments","David Gassner"),("Advanced Unity 3D Game Programming","Michael House"),("Up and Running with Ubuntu Desktop Linux","Scott Simpson"),("Up and Running with C","Dan Gookin") ]

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return devCourses.count
    }

    func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell = UITableViewCell()

        let (courseTitle,courseAuthor) = devCourses[indexPath.row]
        cell.textLabel?.text = courseTitle

        return cell
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // dispose of any resources that can be recreated.
    }


}

我不明白NSIndexPath是如何工作的.我已经阅读了文档,但是在我学习这一点的过程中,我仍然难以理解.我如何知道NSIndexPath具有行的属性?罐头有人解释这一行的每一部分请:

let (courseTitle,courseAuthor) = devCourses[indexPath.row]

NSIndexPath如何知道此常量中的courseTitle引用索引号0 whitin数组索引0(“iOS App Dev with Swift Essential Training”,“Simon Allardice”)

What I don’t understand how NSIndexPath works.

对于iOS,如果您正在使用UITableViews,则可以将NSIndexPath视为包含两个Int属性部分和行的只读结构,如果您正在使用UICollectionViews,则可以将其视为section和item.

您可以使用NSIndexPath创建它们:forRow:inSection:factory方法:

let indexPath = NSIndexPath(forRow: 1,inSection: 0)

并通过访问他们的属性阅读它们:

print("row is \(indexPath.row)")

How can I kNow NSIndexPath has property of row?

Xcode有一些很好的功能可以帮助您理解您正在查看的代码.在Xcode中,按住Option键点击上面语句行中的行,它会告诉你它是什么.在弹出窗口中,如果单击Reference旁边的NSIndexPath UIKit Additions,它将显示文档.

Can somebody explain every part of this line please:

let (courseTitle,courseAuthor) = devCourses[indexPath.row]

devCourses是一个元组数组,包含两个String类型的值.您可以通过选项单击devCourses来看到它,它显示[(String,String)].如果它是一个String数组的数组,它会说[[String]]或[Array< String>](这是两种说法相同的方式).

indexPath.row只是一个Int,表示tableView的选定行.

然后devCourses [indexPath.row]是该索引的元组.例如,如果行为0,那么元组将是(“iOS App Dev with Swift Essential Training”,“Simon Allardice”).

最后,您可以通过将它们声明为元组并使用元组初始化它们来同时初始化两个变量.例如:

let (a,b) = (3,4)

创建两个Int常量a和b,并将3分配给a和4分配给b.

所以这个语句是从整数indexPath.row指示的数组中检索元组并创建两个变量,为第一个变量courseTitle分配元组中第一个值的值,并为第二个变量赋值courseAuthor中第二个值的值.元组.

Swift 3的更新

NSIndexPath仍然存在于Foundation中,但是当在Swift 3中使用indexPaths时,现在使用了新类型的IndexPath.这种类型是一种结构.

您仍然可以使用以下更新语法在Swift 3中创建NSIndexPath,但无法更改属性:

var ip = NSIndexPath(row: 0,section: 0)

ip.row = 5    // Cannot assign to property: 'row' is a get-only property

但您应该使用新的IndexPath结构.

IndexPath使用类似的语法创建:

var ip2 = IndexPath(row: 0,section: 0)

ip2.row = 5   // this works

您可以通过使用as转换来在IndexPath和NSIndexPath之间进行转换:

let ip = NSIndexPath(row: 0,section: 0)
let ip2 = ip as IndexPath     // convert to IndexPath
let ip3 = ip2 as NSIndexPath  // convert back to NSIndexPath

所有使用indexPaths的Cocoa和Cocoa Touch API都已转换为在Swift中使用IndexPath.

数组 – Swift中的NSIndexPath的更多相关文章

  1. html5使用canvas实现弹幕功能示例

    这篇文章主要介绍了html5使用canvas实现弹幕功能示例的相关资料,需要的朋友可以参考下

  2. HTML5 WebSocket实现点对点聊天的示例代码

    这篇文章主要介绍了HTML5 WebSocket实现点对点聊天的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. 前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)

    这篇文章主要介绍了前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. H5 canvas实现贪吃蛇小游戏

    本篇文章主要介绍了H5 canvas实现贪吃蛇小游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

  6. ios – parse.com用于键,预期字符串的无效类型,但是得到了数组

    我尝试将我的数据保存到parse.com.我已经预先在parse.com上创建了一个名为’SomeClass’的类.它有一个名为’mySpecialColumn’的列,其数据类型为String.这是我尝试使用以下代码保存数据的代码:如果我运行这个我得到:错误:密钥mySpecialColumn的无效类型,预期字符串,但得到数组这就是我在parse.com上的核心外观:有谁知道我为什么会收到这个错误?

  7. ios – 在Swift中将输入字段字符串转换为Int

    所以我非常擅长制作APP广告Swift,我试图在文本字段中做一些非常简单的输入,取值,然后将它们用作Int进行某些计算.但是’vardistance’有些东西不正确它是导致错误的最后一行代码.它说致命错误:无法解开Optional.None解决方法在你的例子中,距离是一个Int?否则称为可选的Int..toInt()返回Int?因为从String到Int的转换可能失败.请参阅以下示例:

  8. ios – Swift相当于`[NSDictionary initWithObjects:forKeys:]`

    Swift的原生字典是否与[NSDictionaryinitWithObjects:forKeys:]相当?假设我有两个带键和值的数组,并希望将它们放在字典中.在Objective-C中,我这样做:当然我可以通过两个数组迭代一个计数器,使用vardict:[String:Int]并逐步添加东西.但这似乎不是一个好的解决方案.使用zip和enumerate可能是同时迭代两者的更好方法.然而,这种方法

  9. 如何在iOS中检测文本(字符串)语言?

    例如,给定以下字符串:我想检测每个声明的字符串中使用的语言.让我们假设已实现函数的签名是:如果没有检测到语言,则返回可选字符串.因此,适当的结果将是:有一个简单的方法来实现它吗?

  10. ios – 上下文类型’NSFastEnumeration’不能与数组文字一起使用

    斯威夫特3,你会这样做吗?解决方法正如您所发现的,您不能使用as-casting将数组文字的类型指定为NSFastEnumeration.您需要找到一个符合NSFastEnumeration的正确类,在您的情况下它是NSArray.通常写这样的东西:

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部