在 swift 中追加一个数组,遇到问题
Appending an array in swift, having problems
我收到错误 'AnyObject' 没有名为 'append' 的成员,因为我正在尝试 post 到数组。我不确定如何修复错误,因为我认为我的代码是正确的。有人可以帮我做适当的调整吗?我的代码如下:
import CloudKit
import UIKit
import Foundation
class Items {
var theSelfie: [String]
init(record: CKRecord) {
println("init")
var record: CKRecord
var iama: String
var youarea: String
var image: CKAsset? // tried also initializing the CKAsset separately
var postPic: UIImage?
let database = CKContainer.defaultContainer().publicCloudDatabase
let container = CKContainer.defaultContainer()
let publicDB = container.publicCloudDatabase
let data = CKRecord(recordType: "theUsers")
var predicate = NSPredicate(value: true)
let myQuery = CKQuery(recordType: "theUsers", predicate: predicate)
var mySelfie = theSelfie
publicDB.performQuery(myQuery, inZoneWithID: nil) { results, error in
if error != nil {
println(error)
} else {
for record in results{
let aselfie = data.objectForKey("selfie")
aselfie.append[mySelfie]()
return ()
}
}
}
}
}
}
您正在从字典中获取 aselfie
。 AnyObject
类型的字典 returns 个对象。既然你看起来很自信,那就是 Array
你可以将它转换为 Array
或 NSArray
.
let aselfie = data.objectForKey("selfie") as Array
objectForKey 的 return 类型是 AnyObject!
类型 AnyObject
没有名为 append
的方法。您需要将 return 值转换为正确的类型。
此外,我认为我从未见过您使用键 "selfie" 在 data
中输入条目。如果你想让它成为一个数组,那么你需要在某个地方调用 data.setObject
您应该将自拍转换为数组,然后调用它的 append 方法而不是它的下标
if let aselfie = data.objectForKey("selfie") as? [AnyObject] // if aselfie is supposed to hold object of single type case it as [ObjcetsToHold]
aselfie.append(mySelfie)
return ()
}
我不认为 aselfie.append[mySelfie]()
是有效的 Swift 语法。它甚至可以编译吗?也许你的意思是 aselfie.append(mySelfie)
?
还有,你怎么知道aselfie
是一个Array
?你应该施放它:
let aselfie = data.objectForKey("selfie") as? Array<Whatever>
aselfie.append[mySelfie]()
return ()
}
我收到错误 'AnyObject' 没有名为 'append' 的成员,因为我正在尝试 post 到数组。我不确定如何修复错误,因为我认为我的代码是正确的。有人可以帮我做适当的调整吗?我的代码如下:
import CloudKit
import UIKit
import Foundation
class Items {
var theSelfie: [String]
init(record: CKRecord) {
println("init")
var record: CKRecord
var iama: String
var youarea: String
var image: CKAsset? // tried also initializing the CKAsset separately
var postPic: UIImage?
let database = CKContainer.defaultContainer().publicCloudDatabase
let container = CKContainer.defaultContainer()
let publicDB = container.publicCloudDatabase
let data = CKRecord(recordType: "theUsers")
var predicate = NSPredicate(value: true)
let myQuery = CKQuery(recordType: "theUsers", predicate: predicate)
var mySelfie = theSelfie
publicDB.performQuery(myQuery, inZoneWithID: nil) { results, error in
if error != nil {
println(error)
} else {
for record in results{
let aselfie = data.objectForKey("selfie")
aselfie.append[mySelfie]()
return ()
}
}
}
}
}
}
您正在从字典中获取 aselfie
。 AnyObject
类型的字典 returns 个对象。既然你看起来很自信,那就是 Array
你可以将它转换为 Array
或 NSArray
.
let aselfie = data.objectForKey("selfie") as Array
objectForKey 的 return 类型是 AnyObject!
类型 AnyObject
没有名为 append
的方法。您需要将 return 值转换为正确的类型。
此外,我认为我从未见过您使用键 "selfie" 在 data
中输入条目。如果你想让它成为一个数组,那么你需要在某个地方调用 data.setObject
您应该将自拍转换为数组,然后调用它的 append 方法而不是它的下标
if let aselfie = data.objectForKey("selfie") as? [AnyObject] // if aselfie is supposed to hold object of single type case it as [ObjcetsToHold]
aselfie.append(mySelfie)
return ()
}
我不认为 aselfie.append[mySelfie]()
是有效的 Swift 语法。它甚至可以编译吗?也许你的意思是 aselfie.append(mySelfie)
?
还有,你怎么知道aselfie
是一个Array
?你应该施放它:
let aselfie = data.objectForKey("selfie") as? Array<Whatever>
aselfie.append[mySelfie]()
return ()
}