Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中循环遍历对象数组_Ios_Arrays_Swift - Fatal编程技术网

Ios 如何在swift中循环遍历对象数组

Ios 如何在swift中循环遍历对象数组,ios,arrays,swift,Ios,Arrays,Swift,我试图访问存储在数组中的对象的url,但无论使用什么方法,都会出现错误 let userPhotos = currentUser?.photos for var i = 0; i < userPhotos!.count ; ++i { let url = userPhotos[i].url } 我得到: “[ModelAttachment]”没有名为“Generator”的成员 我的数组是var photos:array?,我的模型附件如下所示: cla

我试图访问存储在数组中的对象的url,但无论使用什么方法,都会出现错误

let userPhotos = currentUser?.photos

    for var i = 0; i < userPhotos!.count ; ++i {
        let url = userPhotos[i].url
    }
我得到:

“[ModelAttachment]”没有名为“Generator”的成员

我的数组是
var photos:array?
,我的模型附件如下所示:

class ModelAttachment :Model {
var id: String?
var url: String?
var thumb: String?
}

任何指向我做错了什么的指针都很好:)

您可以尝试使用语法中的简单NSArray在swift中对数组进行迭代,从而缩短代码。 以下内容适用于我:

class ModelAttachment {
    var id: String?
    var url: String?
    var thumb: String?
}

var modelAttachementObj = ModelAttachment()
modelAttachementObj.id = "1"
modelAttachementObj.url = "http://www.google.com"
modelAttachementObj.thumb = "thumb"

var imgs: Array<ModelAttachment> = [modelAttachementObj]

for img in imgs  {
    let url = img.url
    NSLog(url!)
}
类模型附件{
变量id:字符串?
var-url:String?
变量:字符串?
}
var modelAttachementObj=ModelAttachment()
modelAttachementObj.id=“1”
modelAttachementObj.url=”http://www.google.com"
modelAttachementObj.thumb=“thumb”
变量imgs:Array=[modelAttachementObj]
对于img中的img{
让url=img.url
NSLog(url!)
}

属性是一个可选的数组,必须在访问其元素之前展开(与获取数组的
count
属性相同):

var i=0的
;我喜欢照片!。计数++我{
让url=userPhotos![i].url
}

在使用简单的
for in
循环进行迭代之前,使用
if let
,安全地将对象展开并向下投射到正确的类型

if let currentUser = currentUser, 
    let photos = currentUser.photos as? [ModelAttachment] 
{
    for object in photos {
        let url = object.url
    }
}
如果您希望在范围内获得结果,还有
guard let else
而不是
if let

guard let currentUser = currentUser, 
    let photos = currentUser.photos as? [ModelAttachment] else 
{
    // break or return
}
// now 'photos' is available outside the guard
for object in photos {
    let url = object.url
}

您的
userPhotos
数组是选项类型,您应该使用
检索实际的底层对象
(如果您希望在对象不存在时出错)或
(如果您希望在url中接收
nil
):


如果您将照片阵列声明为:
[ModelAttachment]
,您应该能够使用for循环。谢谢!最后,它通过如下方式修改代码来工作:
for userPhotos中的对象!正如[ModelAttachment]
一样,您可以为userPhotos中的对象编写简单的
和它将工作。但它违背了可选类型的用途。以前支持这种类型,但自Swift 3.0以来已被弃用。请使用正式的Swift语法注释,
for语法在Swift 3中不再存在。该语法已从Swift 3中删除。
if let currentUser = currentUser, 
    let photos = currentUser.photos as? [ModelAttachment] 
{
    for object in photos {
        let url = object.url
    }
}
guard let currentUser = currentUser, 
    let photos = currentUser.photos as? [ModelAttachment] else 
{
    // break or return
}
// now 'photos' is available outside the guard
for object in photos {
    let url = object.url
}
let userPhotos = currentUser?.photos

for var i = 0; i < userPhotos!.count ; ++i {
    let url = userPhotos![i].url
}
let urls = userPhotos?.map{ $0.url }