如何导入自己文件夹中的自定义类



问候语,

所以我在网上浏览了一下,没有一个答案能真正满足我的需求,我对swift还是个新手,因此我习惯了java相当简单的导入规则。我离题了。

因此,我的文件结构如下:我有我的项目文件夹,其中有一个模型文件夹,其中包含一个名为CityData.swift的文件。在这个文件夹之外,我所有的其他视图控制器都位于projectFolder中,这是Xcode新项目布局的标准设置。

我的问题是,我想创建一个类型为CityData的数组,如下所示:

var data:[CityData] = [CityData(cityName:"Moscow", cityHighLight:"Capital of Russia")].

然而,我收到一个错误,说使用了未声明的类型。如何声明此类型,以及如何在数组内部正确调用构造函数。据我所知,init()是构造构造函数的方法,swift没有"new"的概念。

编辑:想通了,不需要导入,只是不小心大写了我的c is cityData。现在我通过cannot use instance member 'cityData' within properly initalizer; property initializer run before self is available.得到一个新错误

这意味着什么,那么我将如何在cityData数组中调用我的构造函数?

编辑2:代码示例:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutler wear var cityPicker :UIPickerView!; 
var data = [cityData]();
override func viewDidLoad() {
data = [cityData(cityName: "Moscow", cityHighLight:"Russian Capital")
}

关于cityData类的外观:

cityData {
var cityName:String;
var cityHighLight:String;
init(cityName:String, cityHighLight:String) {
self.cityName = cityName;
self.cityHighLight = cityHighLight;
}
//getter methods below since swifts get/set within a variable make 0 sense.
}

编辑:3

VC:

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource{

var lat:Double = 0.0;
var long:Double = 0.0;
@IBOutlet weak var cityPicker: UIPickerView!;
@IBOutlet weak var dataFromPicker: UILabel!;

var data = [cityData]();
var cityData:[String] = ["Waycross", "Plains", "Athens", "Milledgeville", "Wrightsville"];
var cityHighlights:[String] = ["Alligators", "Peanuts", "Heaven on Earth", "Mental Hospital", "Home of Herschel"];

//number of columns
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1;
}
//number of rows
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return cityData.count;
}
//title for row
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
dataFromPicker.text = cityHighlights[row];
return cityData[row];
}
override func viewDidLoad() {
data = [
cityData(cityName:"Moscow", cityHighLight:"Russians", cityLat: 200.0, cityLong:200.0)
];

super.viewDidLoad()
dataFromPicker.textAlignment = .center;
self.cityPicker.dataSource = self;
self.cityPicker.delegate = self;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

cityData.swift:

导入基础

class cityData {
var cityName:String;
var cityHighLight:String;
var cityLat:Double;
var cityLong:Double;
init(cityName: String, cityHighLight:String, cityLat:Double, cityLong:Double) {
self.cityName = cityName;
self.cityHighLight = cityHighLight;
self.cityLat = cityLat;
self.cityLong = cityLong;
}
}

关于cityData类看起来像

问题是cityDataCityData是两个不同的名称。您的类需要被称为CityData,并且需要正确地声明它。

最新更新