我在Swift 3.0中有一个查询。我正在调用Web服务并从服务器获取一组联系人。我正在创建一个班级联系人:
Class Contacts: NSObject {
var address : String?
var email : String?
var gender : String?
var name : String?
var id : String?
var phone : String?
//var array to store class object
var arrayOfContacts = [Contacts]()
override init() {
super.init()
}
}
我需要从代码中的某个地方访问arrayOfContacts中的所有对象存储。
我应该如何创建这样的功能,或者我的方法是错误的?
答案 0 :(得分:3)
两种方式
方式1:
将您的arrayOfContacts
声明为静态
class Contacts: NSObject {
var address : String?
var email : String?
var gender : String?
var name : String?
var id : String?
var phone : String?
//var array to store class object
static var arrayOfContacts = [Contacts]()
override init() {
super.init()
}
}
并将其作为
访问print(Contacts.arrayOfContacts)
方式2:
如果您希望联系人singleton
使用
class Contacts: NSObject {
var address : String?
var email : String?
var gender : String?
var name : String?
var id : String?
var phone : String?
var arrayOfContacts = [Contacts]()
static var sharedInstance = Contacts()
private override init() {
super.init()
}
}
然后以
的形式访问它Contacts.sharedInstance.arrayOfContacts
希望有所帮助
答案 1 :(得分:2)
实际上你可以在同一个类中创建一个对象数组但是你不能在同一个类中创建它,所以我提供了代码如何实现它
Class Contacts: NSObject {
var address : String?
var email : String?
var gender : String?
var name : String?
var id : String?
var phone : String?
override init() {
super.init()
}
static func arrayOfObject(_ array: NSArray)-> [Contacts] {
var contactsArr: [Contacts] = []
for data in array {
let cont = Contacts(...)//init all properties
contactsArr.append(cont)
}
return contactsArr
}
}
并在获取数据的地方调用此方法
Contacts.arrayOfObject(<array of data>)
答案 2 :(得分:1)
您可以使用Singleton模式。 在操场上玩它。
import Foundation
class Contacts: NSObject {
var address : String?
var email : String?
var gender : String?
var name : String?
var id : String?
var phone : String?
override init() {
super.init()
ContactSingleton.shared.arrayOfContacts.append(self)
}
}
final class ContactSingleton {
// MARK: Properties
internal static let shared = ContactSingleton()
internal var arrayOfContacts: [Contacts] = []
// MARK: - Initializer
private init() { }
}
let contact1 = Contacts()
print(ContactSingleton.shared.arrayOfContacts.count) // 1
let contact2 = Contacts()
let contact3 = Contacts()
print(ContactSingleton.shared.arrayOfContacts.count) // 3