วิธีสร้างอาร์เรย์ว่างใน Swift


155

ฉันสับสนกับวิธีที่เราสร้างอาร์เรย์ใน Swift คุณช่วยบอกฉันได้กี่วิธีในการสร้างอาร์เรย์ว่างที่มีรายละเอียดบางอย่าง?


9
var myArray: [String] = []
Leo Dabus



ดังนั้นฉันควรทำอย่างไรถ้าฉันต้องการจัดเก็บวัตถุชนิดใด ๆ ในอาร์เรย์ของฉัน
Inuyasha

var myArray: [AnyObject] = []
Leo Dabus

คำตอบ:


297

ไปเลย:

var yourArray = [String]()

ด้านบนยังทำงานได้กับประเภทอื่น ๆ และไม่เพียง แต่สตริง มันเป็นเพียงตัวอย่าง

การเพิ่มคุณค่าให้กับมัน

ฉันคิดว่าคุณจะต้องการเพิ่มมูลค่าในที่สุด!

yourArray.append("String Value")

หรือ

let someString = "You can also pass a string variable, like this!"
yourArray.append(someString)

เพิ่มโดยการแทรก

เมื่อคุณมีค่าน้อยคุณสามารถแทรกค่าใหม่แทนการต่อท้าย ตัวอย่างเช่นหากคุณต้องการแทรกวัตถุใหม่ที่จุดเริ่มต้นของอาร์เรย์ (แทนที่จะต่อท้ายพวกเขาไปที่ท้าย):

yourArray.insert("Hey, I'm first!", atIndex: 0)

หรือคุณสามารถใช้ตัวแปรเพื่อทำให้ส่วนแทรกของคุณมีความยืดหยุ่นมากขึ้น:

let lineCutter = "I'm going to be first soon."
let positionToInsertAt = 0
yourArray.insert(lineCutter, atIndex: positionToInsertAt)

คุณอาจต้องการลบบางสิ่งในที่สุด

var yourOtherArray = ["MonkeysRule", "RemoveMe", "SwiftRules"]
yourOtherArray.remove(at: 1)

ข้างต้นใช้งานได้ดีเมื่อคุณรู้ว่าค่าใดอยู่ในอาร์เรย์ (นั่นคือเมื่อคุณทราบค่าดัชนี) เมื่อค่าดัชนีเริ่มต้นที่ 0 รายการที่สองจะอยู่ที่ดัชนี 1

การลบค่าโดยไม่ทราบดัชนี

แต่ถ้าคุณไม่ทำล่ะ จะเกิดอะไรขึ้นถ้า yourOtherArray มีหลายร้อยค่าและสิ่งที่คุณรู้คือคุณต้องการลบอันที่เท่ากับ "RemoveMe"

if let indexValue = yourOtherArray.index(of: "RemoveMe") {
    yourOtherArray.remove(at: indexValue)
}

สิ่งนี้จะช่วยให้คุณเริ่มต้นได้!


ไม่แน่ใจว่าทำไมคำตอบนี้มีคะแนนมากที่สุด มันตอบคำถามจำนวนมากที่ OP ไม่เคยถาม แต่ให้วิธีเดียวในการสร้างอาร์เรย์ว่างเมื่อคำถามถามว่า 'ได้โปรดบอกฉันว่ามีวิธีสร้างอาร์เรย์ว่างได้กี่วิธี'
Kal

27
var myArr1 = [AnyObject]()

สามารถเก็บวัตถุใด ๆ

var myArr2 = [String]()

สามารถเก็บสตริงได้เท่านั้น


คุณสามารถบอกวิธีเพิ่มองค์ประกอบในรายการอาร์เรย์ได้
ไหม


24

สวิฟท์ 3

มีสาม (3) วิธีในการสร้างอาเรย์ที่ว่างเปล่าในวิธีที่รวดเร็วและแบบชวเลขที่เป็นที่ต้องการเสมอ

วิธีที่ 1: ชวเลขไวยากรณ์

var arr = [Int]()

วิธีที่ 2: เครื่องมือเตรียมใช้งานอาร์เรย์

var arr = Array<Int>()

วิธีที่ 3: อาร์เรย์ที่มีตัวอักษรของอาร์เรย์

var arr:[Int] = []

วิธีที่ 4: เครดิตไปที่ @BallpointBen

var arr:Array<Int> = []

1
var arr: Array<Int> = []หรือ [T]ชวเลขเพียงเพื่อArray<T>
BallpointBen

@XinyangLi เหตุใดจึงเลือกใช้ไวยากรณ์ชวเลข มีความแตกต่างในการรวบรวมเวลาระหว่าง 4 วิธีเหรอ?
KlimczakM

20

มี 2 ​​วิธีที่สำคัญในการสร้าง / ทำให้เป็นอาร์เรย์ที่ไม่ซับซ้อน

var myArray = [Double]()

สิ่งนี้จะสร้างอาร์เรย์ของ Doubles

var myDoubles = [Double](count: 5, repeatedValue: 2.0)

สิ่งนี้จะสร้างอาเรย์ของ 5 doubles ทั้งหมดเริ่มต้นด้วยค่า 2.0


ขอบคุณฉันขอประกาศเช่นนี้ `var myArray = [AnyObject] ()` ได้ไหม
Inuyasha

ใช่ว่าจะสร้างอาร์เรย์ของ 'AnyObject' ซึ่งจะช่วยให้คุณใส่อะไรเข้าไปในนั้นได้ ถ้าคุณไม่ต้องการอาเรย์แบบนี้มันจะเป็นการดีกว่าถ้าให้ค่าเฉพาะเช่น 'var myArray = [String] ()'
แอรอน

หมายเหตุ Swift 4 เปลี่ยนไวยากรณ์สำหรับการเริ่มต้นอาร์เรย์ด้วยค่าการทำซ้ำดังต่อไปนี้: var myDoubles = [Double](repeating: 2.0, count: 5)- จดบันทึกการเปลี่ยนแปลงลำดับของพารามิเตอร์และการเปลี่ยนแปลงในเลเบลของrepeatedValueเป็นrepeating
HirdayGupta

8

หากคุณต้องการประกาศอาเรย์ประเภทสตริงว่างคุณสามารถทำได้ใน 5 วิธีที่แตกต่าง: -

var myArray: Array<String> = Array()
var myArray = [String]()
var myArray: [String] = []
var myArray = Array<String>()
var myArray:Array<String> = []

อาร์เรย์ทุกชนิด: -

    var myArray: Array<AnyObject> = Array()
    var myArray = [AnyObject]()
    var myArray: [AnyObject] = []
    var myArray = Array<AnyObject>()
    var myArray:Array<AnyObject> = []

Array of Integer ประเภท: -

    var myArray: Array<Int> = Array()
    var myArray = [Int]()
    var myArray: [Int] = []
    var myArray = Array<Int>()
    var myArray:Array<Int> = []

7

นี่คือภารกิจทั่วไปใน Swift 4 ที่คุณสามารถใช้เป็นข้อมูลอ้างอิงจนกว่าคุณจะชินกับสิ่งต่าง ๆ

    let emptyArray = [String]()
    let emptyDouble: [Double] = []

    let preLoadArray = Array(repeating: 0, count: 10) // initializes array with 10 default values of the number 0

    let arrayMix = [1, "two", 3] as [Any]
    var arrayNum = [1, 2, 3]
    var array = ["1", "two", "3"]
    array[1] = "2"
    array.append("4")
    array += ["5", "6"]
    array.insert("0", at: 0)
    array[0] = "Zero"
    array.insert(contentsOf: ["-3", "-2", "-1"], at: 0)
    array.remove(at: 0)
    array.removeLast()
    array = ["Replaces all indexes with this"]
    array.removeAll()

    for item in arrayMix {
        print(item)
    }

    for (index, element) in array.enumerated() {
        print(index)
        print(element)
    }

    for (index, _) in arrayNum.enumerated().reversed() {
        arrayNum.remove(at: index)
    }

    let words = "these words will be objects in an array".components(separatedBy: " ")
    print(words[1])

    var names = ["Jemima", "Peter", "David", "Kelly", "Isabella", "Adam"]
    names.sort() // sorts names in alphabetical order

    let nums = [1, 1234, 12, 123, 0, 999]
    print(nums.sorted()) // sorts numbers from lowest to highest

4

Array in swift เขียนเป็น ** Array <Element> ** โดยที่ Element เป็นชนิดของค่าที่อนุญาตให้เก็บอาร์เรย์ได้

อาร์เรย์สามารถเริ่มต้นเป็น:

let emptyArray = [String]()

มันแสดงให้เห็นว่ามันเป็นอาร์เรย์ของสตริงประเภท

ชนิดของตัวแปร emptyArray ถูกอนุมานว่าเป็น [String] จากประเภทของ initializer

สำหรับการสร้างอาร์เรย์ของสตริงประเภทที่มีองค์ประกอบ

var groceryList: [String] = ["Eggs", "Milk"]

GroceryList ได้รับการเริ่มต้นด้วยสองรายการ

ตัวแปร GroceryList ถูกประกาศเป็น"อาร์เรย์ของค่าสตริง"ซึ่งเขียนเป็น [String] อาร์เรย์นี้ได้ระบุประเภทค่าของ String โดยอนุญาตให้เก็บค่า String เท่านั้น

มีคุณสมบัติที่หลากหลายของอาร์เรย์เช่น:

- เพื่อตรวจสอบว่าอาร์เรย์มีองค์ประกอบหรือไม่ (หากอาร์เรย์นั้นว่างเปล่าหรือไม่)

isEmpty property (Boolean) สำหรับตรวจสอบว่าคุณสมบัติ count เท่ากับ 0:

if groceryList.isEmpty {
    print("The groceryList list is empty.")
} else {
    print("The groceryList is not empty.")
}

- ผนวก (เพิ่ม) องค์ประกอบในอาร์เรย์

คุณสามารถเพิ่มรายการใหม่ไปยังจุดสิ้นสุดของอาร์เรย์ได้โดยเรียกวิธีการต่อท้ายของอาร์เรย์ (_ :):

groceryList.append("Flour")

GroceryList ตอนนี้มี 3 รายการ

อีกทางหนึ่งต่อท้ายอาร์เรย์ของรายการที่เข้ากันได้หนึ่งรายการขึ้นไปด้วยตัวดำเนินการมอบหมายเพิ่มเติม (+ =):

groceryList += ["Baking Powder"]

GroceryList ตอนนี้มี 4 รายการ

groceryList += ["Chocolate Spread", "Cheese", "Peanut Butter"]

GroceryList ตอนนี้มี 7 รายการ


3

ตาม Swift 5

    // An array of 'Int' elements
    let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]

    // An array of 'String' elements
    let streets = ["Albemarle", "Brandywine", "Chesapeake"]

    // Shortened forms are preferred
    var emptyDoubles: [Double] = []

    // The full type name is also allowed
    var emptyFloats: Array<Float> = Array()

2

คุณสามารถลบเนื้อหาของอาเรย์โดยผ่านดัชนีอาเรย์หรือคุณสามารถลบทั้งหมดได้

    var array = [String]()
    print(array)
    array.append("MY NAME")
    print(array)
    array.removeFirst()
    print(array)
    array.append("MY NAME")
    array.removeLast()
    array.append("MY NAME1")
    array.append("MY NAME2")
    print(array)
    array.removeAll()
    print(array)

1

สวิฟท์ 5

// Create an empty array
var emptyArray = [String]()

// Add values to array by appending (Adds values as the last element)
emptyArray.append("Apple")
emptyArray.append("Oppo")

// Add values to array by inserting (Adds to a specified position of the list)
emptyArray.insert("Samsung", at: 0)

// Remove elements from an array by index number
emptyArray.remove(at: 2)

// Remove elements by specifying the element
if let removeElement = emptyArray.firstIndex(of: "Samsung") {
    emptyArray.remove(at: removeElement)
}

ให้คำตอบที่คล้ายกัน แต่ไม่สามารถใช้ได้กับ Swift รุ่นล่าสุด (Swift 5) ดังนั้นนี่คือคำตอบที่ได้รับการอัปเดต หวังว่ามันจะช่วย! :)


1

การเริ่มต้นอาร์เรย์ด้วยการนับที่กำหนดไว้ล่วงหน้า:

Array(repeating: 0, count: 10)

ฉันมักจะใช้สิ่งนี้สำหรับการทำแผนที่คำสั่งที่ฉันต้องการจำนวนวัตถุจำลองที่ระบุ ตัวอย่างเช่น,

let myObjects: [MyObject] = Array(repeating: 0, count: 10).map { _ in return MyObject() }


0

เข้ากันได้กับ: Xcode 6.0.1+

คุณสามารถสร้างอาเรย์ที่ว่างเปล่าโดยการระบุประเภทองค์ประกอบของอาเรย์ของคุณในการประกาศ

ตัวอย่างเช่น:

// Shortened forms are preferred
var emptyDoubles: [Double] = []

// The full type name is also allowed
var emptyFloats: Array<Float> = Array()

ตัวอย่างจากหน้าผู้พัฒนา apple (Array):

หวังว่านี่จะช่วยให้ทุกคนสะดุดกับหน้านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.