คำถามติดแท็ก swift2

ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องโดยตรงกับการเปลี่ยนแปลงในเวอร์ชัน 2.x ของภาษาโปรแกรม Swift ของ Apple ใช้แท็ก [รวดเร็ว] สำหรับคำถามเกี่ยวกับภาษาทั่วไปหรือแท็ก [ios], [โกโก้], [apple-watch] ฯลฯ สำหรับคำถามเกี่ยวกับการพัฒนาบนแพลตฟอร์ม Apple

13
คำสำคัญของการ์ด Swift
Swift 2 แนะนำguardคำสำคัญซึ่งสามารถใช้เพื่อให้แน่ใจว่าข้อมูลต่าง ๆ ได้รับการกำหนดค่าพร้อมใช้งาน ตัวอย่างที่ฉันเห็นในเว็บไซต์นี้แสดงให้เห็นถึงฟังก์ชั่น submitTapped: func submitTapped() { guard username.text.characters.count > 0 else { return } print("All good") } ฉันสงสัยว่าการใช้guardแตกต่างจากการทำแบบเก่าโดยใช้ifเงื่อนไขหรือไม่ มันให้ประโยชน์ซึ่งคุณไม่สามารถทำได้ด้วยการใช้เช็คแบบธรรมดาหรือไม่?

6
ผู้ประกอบการไบนารี '|' ไม่สามารถใช้กับตัวถูกดำเนินการ UIViewAutoresizing สองตัว
รับข้อผิดพลาดนี้ใน Swift 2.0 ผู้ประกอบการไบนารี '|' ไม่สามารถใช้กับตัวถูกดำเนินการ UIViewAutoresizing สองตัว นี่คือรหัส: let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568)) addSubview(view) view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight ความคิดใด ๆ ที่สามารถเป็นปัญหาได้?
193 ios  swift  cocoa-touch  swift2 

4
Swift 2.0 - ตัวดำเนินการไบนารี“ |” ไม่สามารถใช้กับตัวถูกดำเนินการ UIUserNotificationType สองตัว
ฉันกำลังพยายามลงทะเบียนแอปพลิเคชันของฉันสำหรับการแจ้งเตือนในท้องถิ่นด้วยวิธีนี้: UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil)) ใน Xcode 7 และสวิฟท์ 2.0 - Binary Operator "|" cannot be applied to two UIUserNotificationType operandsฉันได้รับข้อผิดพลาด โปรดช่วยฉันด้วย
193 ios  swift  swift2 

1
ลองลอง! & ลอง? ความแตกต่างคืออะไรและจะใช้เมื่อใด
ในSwift 2.0 , Apple แนะนำวิธีใหม่ในการจัดการข้อผิดพลาด (do-try-catch) เมื่อไม่กี่วันที่ผ่านมาใน Beta 6 มีการใช้คำหลักที่ใหม่กว่า ( try?) try!นอกจากนี้ยังรู้ว่าฉันสามารถใช้ คำหลักทั้งสามคำแตกต่างกันอย่างไรและจะใช้เมื่อใด

6
ไวยากรณ์ของ do-catch-catch
ฉันลองทำความเข้าใจข้อผิดพลาดใหม่ในการจัดการสิ่งที่รวดเร็ว 2 นี่คือสิ่งที่ฉันทำ: ฉันแรกประกาศข้อผิดพลาด enum: enum SandwichError: ErrorType { case NotMe case DoItYourself } แล้วฉันก็ประกาศวิธีที่จะพ่นข้อผิดพลาด (ไม่ใช่คนยกเว้นมันเป็นข้อผิดพลาด) นี่คือวิธีการ: func makeMeSandwich(names: [String: String]) throws -> String { guard let sandwich = names["sandwich"] else { throw SandwichError.NotMe } return sandwich } ปัญหามาจากด้านการโทร นี่คือรหัสที่เรียกใช้วิธีนี้: let kitchen = ["sandwich": "ready", "breakfeast": "not ready"] do { …
162 swift  swift2 

10
'โมดูลไม่ได้รับการรวบรวมสำหรับการทดสอบ' เมื่อใช้ @testable
ฉันกำลังพยายามใช้การ@testableประกาศใหม่ของ Swift 2 เพื่อแสดงชั้นเรียนของฉันไปยังเป้าหมายการทดสอบ อย่างไรก็ตามฉันได้รับข้อผิดพลาดของคอมไพเลอร์นี้: Intervalsเป็นโมดูลที่มีชั้นเรียนที่ฉันพยายามเปิดเผย ฉันจะกำจัดข้อผิดพลาดนี้ได้อย่างไร

9
วิธีที่ง่ายที่สุดในการโยนข้อผิดพลาด / ข้อยกเว้นด้วยข้อความที่กำหนดเองใน Swift 2?
ฉันต้องการทำบางสิ่งใน Swift 2 ที่ฉันคุ้นเคยกับภาษาอื่น ๆ หลายภาษา: ทิ้งข้อยกเว้นรันไทม์ด้วยข้อความที่กำหนดเอง ตัวอย่างเช่น (ใน Java): throw new RuntimeException("A custom message here") ฉันเข้าใจว่าฉันสามารถโยน enum ประเภทที่สอดคล้องกับโปรโตคอล ErrorType ได้ แต่ฉันไม่ต้องการกำหนด enums สำหรับข้อผิดพลาดทุกประเภทที่ฉันโยน ตามหลักการแล้วฉันต้องการเลียนแบบตัวอย่างข้างต้นให้ใกล้เคียงที่สุด ฉันตรวจสอบการสร้างคลาสแบบกำหนดเองที่ใช้โปรโตคอล ErrorType แต่ฉันไม่สามารถเข้าใจได้ว่าโปรโตคอลนั้นต้องการอะไร (ดูเอกสารประกอบ ) ไอเดีย?
145 ios  swift  swift2 

11
ตัวดำเนินการ“ ++” และ“ -” เลิกใช้ Xcode 7.3 แล้ว
ฉันกำลังดูโน้ต Xcode 7.3 และฉันสังเกตเห็นปัญหานี้ ตัวดำเนินการ ++ และ - ถูกเลิกใช้แล้ว บางคนอธิบายได้ไหมว่าทำไมมันถึงถูกเลิก? และฉันขวาว่าในรุ่นใหม่ของ Xcode ตอนนี้คุณจะใช้แทนการ++นี้x += 1; ตัวอย่าง: for var index = 0; index < 3; index += 1 { print("index is \(index)") }

12
รับค่าจำนวนเต็มจากสตริงอย่างรวดเร็ว
ดังนั้นฉันสามารถทำได้: var stringNumb: NSString = "1357" var someNumb: CInt = stringNumb.intValue แต่ฉันหาวิธีทำ w / a Stringไม่เจอ ฉันต้องการทำสิ่งที่ชอบ: var stringNumb: String = "1357" var someNumb: Int = Int(stringNumb) สิ่งนี้ใช้ไม่ได้: var someNumbAlt: Int = myString.integerValue
136 swift  swift2 

5
การลบล้างวิธีการในส่วนขยาย Swift
ฉันมักจะใส่เฉพาะความจำเป็น (คุณสมบัติที่เก็บไว้, ตัวเริ่มต้น) ลงในคำจำกัดความของคลาสของฉันและย้ายทุกสิ่งทุกอย่างไปเป็นของตัวเองextensionซึ่งเหมือนกับextensionบล็อกตรรกะที่ฉันจะจัดกลุ่มด้วย// MARK:เช่นกัน สำหรับคลาสย่อย UIView ฉันจะปิดท้ายด้วยส่วนขยายสำหรับสิ่งที่เกี่ยวข้องกับการจัดวางส่วนหนึ่งสำหรับการสมัครรับข้อมูลและจัดการเหตุการณ์และอื่น ๆ ในส่วนขยายเหล่านี้ผมอย่างหลีกเลี่ยงไม่ได้ที่จะแทนที่วิธี UIKit layoutSubviewsบางส่วนเช่น ฉันไม่เคยสังเกตเห็นปัญหาใด ๆ เกี่ยวกับแนวทางนี้ - จนถึงวันนี้ ใช้ลำดับชั้นของคลาสนี้เช่น: public class C: NSObject { public func method() { print("C") } } public class B: C { } extension B { override public func method() { print("B") } } public class A: …

8
Swift: Guard let vs if let
ฉันได้อ่านเกี่ยวกับ Optionals ใน Swift และฉันได้เห็นตัวอย่างที่if letใช้ตรวจสอบว่าตัวเลือกนั้นมีค่าหรือไม่และในกรณีที่เป็นเช่นนั้นให้ทำบางอย่างกับค่าที่ไม่ได้ใส่ อย่างไรก็ตามฉันได้เห็นว่าใน Swift 2.0 guard letมักใช้คำหลักเป็นส่วนใหญ่ ฉันสงสัยว่าif letถูกลบออกจาก Swift 2.0 หรือยังคงสามารถใช้งานได้ ฉันควรเปลี่ยนโปรแกรมของฉันที่มีif letถึงguard let?

11
stringByAppendingPathComponent ไม่พร้อมใช้งาน
แอพของฉันแชร์รูปภาพบน Instagram โดยจะบันทึกลงในไดเรกทอรีชั่วคราวก่อน: let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo") มันกำลังทำงานอยู่แต่ไม่ทำงานบนSwift 1.2Swift 2.0 ข้อความแสดงข้อผิดพลาดที่ระบุคือ: stringByAppendingPathComponent ไม่พร้อมใช้งาน: ใช้ URLByAppendingPathComponent บน NSURL แทน
132 ios  swift  swift2 

4
พิมพ์โดยไม่ขึ้นบรรทัดใหม่อย่างรวดเร็ว
ใน swift 2.0 print()จะเพิ่มอักขระขึ้นบรรทัดใหม่โดยอัตโนมัติ ใน Swift 1.2 println()และprint()เคยเป็นฟังก์ชันแยกกัน ดังนั้นฉันจะพิมพ์ข้อความและไม่เพิ่มบรรทัดใหม่ได้อย่างไรเนื่องจาก swift ไม่มีฟังก์ชันการพิมพ์ที่ไม่ต่อท้ายบรรทัดใหม่อีกต่อไป
110 swift  swift3  swift2 

5
โปรโตคอลสามารถใช้เป็นข้อ จำกัด ทั่วไปเท่านั้นเนื่องจากมีข้อกำหนดในตัวเองหรือประเภทที่เกี่ยวข้อง
ฉันมีโปรโตคอล RequestType และมี AssociatedType Model ดังต่อไปนี้ public protocol RequestType: class { associatedtype Model var path: String { get set } } public extension RequestType { public func executeRequest(completionHandler: Result<Model, NSError> -> Void) { request.response(rootKeyPath: rootKeyPath) { [weak self] (response: Response<Model, NSError>) -> Void in completionHandler(response.result) guard let weakSelf = self …

4
วิธีปิดเสียงเตือนอย่างรวดเร็ว
ฉันมีโค้ดที่สร้างคำเตือนมากมาย (เลิกใช้ API) ใช้เสียงดัง * ฉันทำได้ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" ... #pragma clang diagnostic pop อย่างไรก็ตามสิ่งนี้ไม่ได้ผลอย่างรวดเร็ว จะทำอย่างไรให้รวดเร็ว? หมายเหตุ: ฉันไม่ต้องการปิดการใช้งานคำเตือนทั่วโลกหรือแม้แต่ไฟล์ที่กว้าง แต่เพียงปิดการใช้งานคำเตือนเฉพาะในส่วนเฉพาะของซอร์สโค้ดของฉัน แก้ไข: ฉันดูเหมือนว่าบันทึกย่อของฉันไม่ชัดเจนพอ: ฉันไม่ต้องการการรวบรวมแบบมีเงื่อนไข (ซึ่งเป็นคำตอบที่เสนอสำหรับรายการที่ซ้ำกัน) ฉันแค่ต้องการปิดเสียงเตือนโดยไม่ต้องใช้ API ใหม่
104 swift  pragma  swift2 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.