Ios 如何在swift中循环遍历对象数组
我试图访问存储在数组中的对象的url,但无论使用什么方法,都会出现错误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
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 }