私は一般的に迅速かつiOSを教えるためのアプリケーションを作成しています。このアプリケーションでは、「レストラン」オブジェクトの配列を作成し、ユーザーが新しいレストランを作成して配列に追加できるようにしたいと考えています。新しいRestaurantインスタンスを作成しても、配列をコピーしているだけなので、実際に何も追加していないと思います。私は、別のファイルにその配列のインスタンスを作成することなく、すべてのファイルにアクセス可能な1つの配列を迅速に作成できるかどうか疑問に思っていました。 (下のコードサンプル)Swift Arrayアクセシビリティすべてのファイルから
/* The following code is in one view controller*/
// Create an array of restuarant instances to use within the application.
var restaurants:[Restaurant] = [
Restaurant(name: "Cafe Deadend", type: "Coffee & Tea Shop",
location: "G/F, 72 Po Hing Fong, Sheung Wan, Hong Kong",
phoneNumber: "232-923423", image: "cafedeadend.jpg",
isVisited: false),
Restaurant(name: "Homei", type: "Cafe", location: "Shop B, G/F, 22-
24A Tai Ping San Street SOHO, Sheung Wan, Hong Kong",
phoneNumber: "348-233423", image: "homei.jpg", isVisited:
false),
Restaurant(name: "Teakha", type: "Tea House", location: "Shop B, 18
Tai Ping Shan Road SOHO, Sheung Wan, Hong Kong",
phoneNumber: "354-243523", image: "teakha.jpg", isVisited:
false)
]
// Get properties to create a new restaurant object
@IBOutlet weak var restaurantName: UITextField!
@IBOutlet weak var restaurantType: UITextField!
@IBOutlet weak var restaurantLocation: UITextField!
@IBOutlet weak var restaurantPhoneNumber: UITextField!
@IBOutlet weak var restaurantImageName: UITextField!
@IBOutlet weak var restaurantIsVisited: UITextField!
// Function for when Add Restaurant button is clicked.
@IBAction func addRestaurant(sender: UIButton) {
var isVisited = false
// Create local vaiables to the properties once a user enters a new restaurant.
let name = self.restaurantName.text!
let type = self.restaurantType.text!
let location = self.restaurantLocation.text!
let phoneNumber = self.restaurantPhoneNumber.text!
let image = self.restaurantImageName.text!
// check to see what the text inside the text field for is visited is, and then set the variable accordingly.
if self.restaurantIsVisited.text! == "Yes" {
isVisited = true
} else {
isVisited = false
}
//here we add the text into a new restaurant object by invoking the function below:
createNewRestaurantObjectAndAddItToArrayOfObjects(name, type: type,
location: location, number: phoneNumber, image: image,
isVisited: isVisited)
}
/* Function name speaks for itslef :)
this method may be unnessecary, but i will go back and fix it
later
*/
func createNewRestaurantObjectAndAddItToArrayOfObjects(name:
String, type: String, location: String, number: String, image:
String, isVisited: Bool) {
let newRestaurant = Restaurant(name: name, type: type,
location: location, phoneNumber: number, image: image,
isVisited: isVisited)
// here i append the new restaurant on to the array of rest objects.
restaurants.append(newRestaurant)
print(restaurants.count)
print(restaurants[21])
}
// The code from here on is how i access the array from another swift file,
var restaurants = AddRestaurantViewController().restaurants
このコードサンプルが私の問題の説明に役立つことを望みます。ありがとう!
の「平坦」バージョンであるすべてのファイルにアクセス可能な1つの配列を作成すると言うとき、あなたの実際の目標は何ですか?このレストランのセットを長期保存しますか?このリストを別のView Controllerに渡すだけですか?それを保存したい場合は、共有ペアを参照するか、sqliteデータベースを作成することもできます。 – nPn
@nPn私はデータベースが必要とは思わない、このアプリケーションは私が迅速に学ぶのを助けることです。はい、私は別のビューコントローラに渡す必要があります – JacobSiegel
その一般的なパターンは、segueを呼び出すいくつかのアクションがあります。これが起こると、segueオブジェクトを含むprepareForSegueが呼び出され、 "desitination" viewcontollerへの参照を取得できます。次に、プロパティを設定して、その次のコントローラに配列を渡すことができます。ちょっとしたことを知るには、iTunesの大学のバージョンcs193pを使ってください。 – nPn