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

Swift เป็นภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปที่ปลอดภัยรวดเร็วและมีการแสดงออกซึ่งพัฒนาโดย Apple Inc. สำหรับแพลตฟอร์มและ Linux Swift เป็นโอเพ่นซอร์ส ใช้แท็กสำหรับคำถามเกี่ยวกับคุณสมบัติภาษาหรือต้องการรหัสใน Swift เท่านั้น ใช้แท็ก [ios], [ipados], [macos], [watch-os], [tvos], [cocoa-touch] และ [cocoa] สำหรับคำถาม (ภาษาที่ไม่เชื่อเรื่องพระเจ้า) เกี่ยวกับแพลตฟอร์มหรือเฟรมเวิร์ก

5
การโต้ตอบกับคลาส C ++ จาก Swift
ฉันมีไลบรารีชั้นเรียนที่สำคัญที่เขียนด้วย C ++ ฉันพยายามใช้ประโยชน์จากบริดจ์บางประเภทภายใน Swift แทนที่จะเขียนใหม่เป็น Swift code แรงจูงใจหลักคือรหัส C ++ แสดงถึงไลบรารีหลักที่ใช้กับหลายแพลตฟอร์ม อย่างมีประสิทธิภาพฉันแค่สร้าง UI ที่ใช้ Swift เพื่อให้ฟังก์ชันหลักทำงานภายใต้ OS X มีคำถามอื่น ๆ ถามว่า "ฉันจะเรียกฟังก์ชัน C ++ จาก Swift ได้อย่างไร" นี่ไม่ใช่คำถามของฉัน ในการเชื่อมโยงกับฟังก์ชัน C ++ สิ่งต่อไปนี้ใช้ได้ดี: กำหนดส่วนหัวเชื่อมต่อผ่าน "C" #ifndef ImageReader_hpp #define ImageReader_hpp #ifdef __cplusplus extern "C" { #endif const char *hexdump(char *filename); const …
89 c++  swift 

21
จะอนุญาตให้ผู้ใช้เลือกภาพด้วย Swift ได้อย่างไร
ฉันกำลังเขียนแอปพลิเคชัน iOS ตัวแรก (iPhone เท่านั้น) ด้วย Swift มุมมองแอปพลิเคชันหลักควรอนุญาตให้ผู้ใช้เลือกภาพจากแกลเลอรีรูปภาพ ฉันพบโค้ดตัวอย่างต่อไปนี้ของViewController.swift : class ViewController: UIImagePickerController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } …

12
รวดเร็ว 3.0 Data เป็น String?
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {} ฉันต้องการdeviceTokenสตริง แต่: let str = String.init(data: deviceToken, encoding: .utf8) str คือ nil รวดเร็ว 3.0 จะปล่อยdataไปได้stringอย่างไร? กำลังลงทะเบียนสำหรับการแจ้งเตือนแบบพุชใน Xcode 8 / Swift 3.0 หรือไม่ ไม่ทำงานและคำตอบคือไม่กี่เดือนที่ผ่านมาฉันได้ลองแล้ว: และพิมพ์:
89 swift  string 

6
การตรวจสอบค่าของบูลเสริม
เมื่อฉันต้องการตรวจสอบว่าบูลเสริมเป็นจริงการทำเช่นนี้ไม่ได้ผล: var boolean : Bool? = false if boolean{ } ส่งผลให้เกิดข้อผิดพลาดนี้: ประเภทตัวเลือก "@IvalueBool?" ไม่สามารถใช้เป็นบูลีนได้ ทดสอบ '! = nil' แทน ฉันไม่ต้องการตรวจสอบศูนย์ ฉันต้องการตรวจสอบว่าค่าที่ส่งคืนเป็นจริงหรือไม่ ฉันต้องทำเสมอหรือไม่if boolean == trueถ้าฉันทำงานกับ Bool เสริม เนื่องจาก Optionals ไม่สอดคล้องBooleanTypeอีกต่อไปคอมไพเลอร์ไม่ควรรู้ว่าฉันต้องการตรวจสอบค่าของ Bool หรือไม่?

18
ใช้สีแบบอักษรหลายสีในป้ายกำกับเดียว
มีวิธีใช้สีแบบอักษรสองหรือสามสีในป้ายกำกับเดียวใน iOS หรือไม่? หากใช้ข้อความ "สวัสดีคุณเป็นอย่างไรบ้าง" เป็นตัวอย่างเช่น "สวัสดี" จะเป็นสีฟ้าและ "คุณเป็นอย่างไร" จะเป็นสีเขียว เป็นไปได้ไหมดูเหมือนง่ายกว่าการสร้างป้ายกำกับหลาย ๆ ป้าย

2
อะไรเปิดใช้ DSL ของ SwiftUI
ดูเหมือนว่าSwiftUIเฟรมเวิร์กใหม่ของ Apple จะใช้ไวยากรณ์รูปแบบใหม่ที่สร้างทูเพิลได้อย่างมีประสิทธิภาพ แต่มีไวยากรณ์อื่น: var body: some View { VStack(alignment: .leading) { Text("Hello, World") // No comma, no separator ?! Text("Hello World!") } } พยายามจัดการสิ่งที่ไวยากรณ์นี้เป็นจริงฉันพบว่าตัวVStackเริ่มต้นที่ใช้ที่นี่ใช้การปิดประเภท() -> Content เป็นพารามิเตอร์ที่สองโดยที่Contentพารามิเตอร์ทั่วไปที่สอดคล้องกับViewที่อนุมานผ่านการปิด หากต้องการทราบว่าประเภทContentใดที่อนุมานได้ฉันได้เปลี่ยนรหัสเล็กน้อยโดยยังคงใช้งานได้: var body: some View { let test = VStack(alignment: .leading) { Text("Hello, World") Text("Hello World!") } return test } ด้วยวิธีนี้testเผยให้เห็นตัวเองไปเป็นชนิดVStack<TupleView<(Text, Text)>>มีความหมายว่าเป็นประเภทContent …
89 swift  swiftui 

8
วิธีแก้ปัญหา“ การแก้ไขสตริงสร้างคำอธิบายการดีบักสำหรับค่าที่เป็นทางเลือก คุณตั้งใจที่จะทำให้มันชัดเจนหรือไม่” ใน Xcode 8.3 beta?
ตั้งแต่เบต้า 8.3 เป็นต้นไปคำเตือน zillions "การแก้ไขสตริงจะสร้างคำอธิบายการดีบักสำหรับค่าที่ไม่บังคับคุณตั้งใจจะทำให้สิ่งนี้ชัดเจนหรือไม่" ปรากฏในรหัสของฉัน ตัวอย่างเช่นคำเตือนปรากฏขึ้นในสถานการณ์ต่อไปนี้ซึ่งตัวเลือกอาจนำไปสู่ศูนย์: let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" ตามที่ออกแบบไว้ก่อนหน้านี้ฉัน (และคอมไพเลอร์) ก็โอเคสำหรับฉันที่จะแก้ไขตัวเลือกเป็น 'ศูนย์' แต่คอมไพเลอร์เปลี่ยนใจ สิ่งที่คอมไพเลอร์แนะนำคือการเพิ่มตัวสร้างสตริงพร้อมคำอธิบายดังนี้: let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" เห็นได้ชัดว่าผลลัพธ์นั้นชัดเจน แต่ก็ยุ่งยากมากในความคิดของฉัน มีตัวเลือกที่ดีกว่านี้หรือไม่? ฉันต้องแก้ไขคำเตือนเหล่านั้นทั้งหมดหรือดีกว่ารอเบต้าถัดไป

2
จะสร้างวัตถุ SceneKit SCNSkinner ในโค้ดได้อย่างไร?
ฉันมีแอป Swift ที่ใช้ SceneKit สำหรับ iOS 8 ฉันโหลดฉากจากไฟล์. แดที่มีเมชที่ควบคุมโดยโครงกระดูก ในรันไทม์ฉันต้องแก้ไขพิกัดพื้นผิว การใช้การแปลงไม่ใช่ตัวเลือก - ฉันต้องคำนวณ UV ใหม่ที่แตกต่างกันโดยสิ้นเชิงสำหรับจุดยอดแต่ละจุดในตาข่าย ฉันรู้ว่ารูปทรงเรขาคณิตไม่เปลี่ยนรูปใน SceneKit และฉันได้อ่านว่าแนวทางที่แนะนำคือการทำสำเนาด้วยตนเอง ฉันพยายามทำเช่นนั้น แต่ฉันมักจะขัดข้องเมื่อพยายามสร้างSCNSkinnerโค้ดใหม่อีกครั้ง ความผิดพลาดเป็นภายในEXC_BAD_ACCESS C3DSourceAccessorGetMutableValuePtrAtIndexน่าเสียดายที่ไม่มีซอร์สโค้ดสำหรับสิ่งนี้ดังนั้นฉันจึงไม่แน่ใจว่าทำไมมันถึงขัดข้อง ฉันได้ จำกัด ให้แคบลงตามSCNSkinnerวัตถุที่ติดกับโหนดตาข่าย ถ้าไม่ตั้งค่าก็ไม่เกิดปัญหาและดูเหมือนว่าสิ่งต่างๆจะใช้งานได้ แก้ไข:นี่คือกลุ่มการโทรที่สมบูรณ์ยิ่งขึ้นของความผิดพลาด: C3DSourceAccessorGetMutableValuePtrAtIndex C3DSkinPrepareMeshForGPUIfNeeded C3DSkinnerMakeCurrentMesh C3DSkinnerUpdateCurrentMesh __CFSetApplyFunction_block_invoke CFBasicHashApply CFSetApplyFunction C3DAppleEngineRenderScene ... ฉันไม่พบเอกสารประกอบหรือรหัสตัวอย่างเกี่ยวกับวิธีสร้างSCNSkinnerวัตถุด้วยตนเอง เนื่องจากฉันเพิ่งสร้างมันขึ้นมาจากตาข่ายที่ใช้งานได้ก่อนหน้านี้จึงไม่น่าจะยากเกินไป ฉันกำลังสร้างSCNSkinnerตามเอกสาร Swift โดยส่งผ่านสิ่งที่ถูกต้องทั้งหมดไปยัง init อย่างไรก็ตามมีคุณสมบัติโครงกระดูกSCNSkinnerที่ฉันไม่แน่ใจว่าจะตั้งค่าอย่างไร ฉันตั้งค่าเป็นโครงกระดูกที่อยู่บนSCNSkinnerตาข่ายเดิมที่ฉันกำลังคัดลอกซึ่งฉันคิดว่าน่าจะใช้ได้ ... แต่มันไม่ได้ เมื่อตั้งค่าคุณสมบัติโครงกระดูกดูเหมือนว่าจะไม่ได้รับมอบหมาย การตรวจสอบทันทีหลังจากงานที่มอบหมายแสดงว่ายังคงเป็นศูนย์ จากการทดสอบฉันพยายามตั้งค่าคุณสมบัติโครงกระดูกของตาข่ายเดิมเป็นอย่างอื่นและหลังจากงานที่ได้รับมอบหมายก็ไม่ถูกแตะต้องเช่นกัน มีใครช่วยให้ความกระจ่างเกี่ยวกับสิ่งที่เกิดขึ้นได้บ้าง? …
88 swift  xcode  ios8  scenekit 

8
คุณแชร์ข้อมูลระหว่างตัวควบคุมมุมมองและวัตถุอื่น ๆ ใน Swift ได้อย่างไร
สมมติว่าฉันมีตัวควบคุมมุมมองหลายตัวในแอป Swift ของฉันและฉันต้องการส่งผ่านข้อมูลระหว่างกัน หากฉันมีหลายระดับในสแต็กคอนโทรลเลอร์มุมมองฉันจะส่งข้อมูลไปยังตัวควบคุมมุมมองอื่นได้อย่างไร หรือระหว่างแท็บในตัวควบคุมมุมมองแถบแท็บ? (โปรดทราบว่าคำถามนี้เป็น "คนสั่น") มีคนถามบ่อยมากจนฉันตัดสินใจเขียนบทช่วยสอนในหัวข้อนี้ ดูคำตอบของฉันด้านล่าง
88 ios  swift 

7
เหตุใด Swift initializers จึงไม่สามารถเรียกตัวเริ่มต้นความสะดวกในซูเปอร์คลาสได้
พิจารณาสองคลาส: class A { var x: Int init(x: Int) { self.x = x } convenience init() { self.init(x: 0) } } class B: A { init() { super.init() // Error: Must call a designated initializer of the superclass 'A' } } ฉันไม่เห็นว่าเหตุใดจึงไม่อนุญาต ในที่สุด initializer ที่กำหนดของแต่ละคลาสจะถูกเรียกด้วยค่าที่ต้องการดังนั้นทำไมฉันต้องทำซ้ำตัวเองในB's initโดยการระบุค่าเริ่มต้นxอีกครั้งเมื่อความสะดวกinitในAจะทำได้ดี?

11
มีทางเลือกอื่นของ Swift สำหรับ NSLog (@“% s”, __PRETTY_FUNCTION__) หรือไม่
ใน Objective C คุณสามารถบันทึกวิธีการที่ถูกเรียกโดยใช้: NSLog(@"%s", __PRETTY_FUNCTION__) โดยปกติจะใช้จากมาโครการบันทึก แม้ว่า Swift จะไม่รองรับมาโคร (ฉันคิดว่า) ฉันยังคงต้องการใช้คำสั่งบันทึกทั่วไปที่มีชื่อของฟังก์ชันที่ถูกเรียก เป็นไปได้ไหมใน Swift อัปเดต: ตอนนี้ฉันใช้ฟังก์ชันส่วนกลางนี้สำหรับการบันทึกซึ่งสามารถพบได้ที่นี่: https://github.com/evermeer/Stuff#print และคุณสามารถติดตั้งโดยใช้: pod 'Stuff/Print' นี่คือรหัส: public class Stuff { public enum logLevel: Int { case info = 1 case debug = 2 case warn = 3 case error = 4 case fatal = 5 …
88 swift 

9
ตรวจสอบว่ามีการเปิดใช้บริการตำแหน่งหรือไม่
ฉันได้ทำการค้นคว้าเกี่ยวกับ CoreLocation เมื่อเร็ว ๆ นี้ฉันพบปัญหาที่ครอบคลุมในที่อื่น แต่ใน Objective C และสำหรับ iOS 8 ฉันรู้สึกโง่ที่ถามเรื่องนี้ แต่คุณจะตรวจสอบได้อย่างไรว่าบริการระบุตำแหน่งเปิดใช้งานโดยใช้ swift บน iOS 9 หรือไม่? บน iOS 7 (และอาจจะเป็น 8?) คุณสามารถใช้ได้locationServicesEnabled()แต่ดูเหมือนว่าจะใช้งานไม่ได้เมื่อคอมไพล์สำหรับ iOS 9 แล้วฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไร? ขอบคุณ!
88 ios  swift  location  ios9  swift3 

12
วิธีการบีบอัดย่อขนาดของรูปภาพก่อนอัพโหลดไปยัง Parse เป็น PFFile? (อย่างรวดเร็ว)
ฉันพยายามอัปโหลดไฟล์ภาพไปยัง Parse หลังจากถ่ายภาพโดยตรงบนโทรศัพท์ แต่มันมีข้อยกเว้น: การยุติแอปเนื่องจากข้อยกเว้น "NSInvalidArgumentException" ที่ไม่ถูกจับเหตุผล: "PFFile ต้องมีขนาดไม่เกิน 10485760 ไบต์" นี่คือรหัสของฉัน: ในตัวควบคุมมุมมองแรก: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "getImage") { var svc = segue.destinationViewController as! ClothesDetail svc.imagePassed = imageView.image } } ในมุมมองตัวควบคุมที่อัปโหลดภาพ: let imageData = UIImagePNGRepresentation(imagePassed) let imageFile = PFFile(name: "\(picName).png", data: imageData) var userpic …

7
คอลเล็กชันที่ไม่เปลี่ยนรูป / เปลี่ยนรูปได้ใน Swift
ฉันอ้างถึงคู่มือการเขียนโปรแกรม Swift ของ Apple เพื่อทำความเข้าใจการสร้างวัตถุที่เปลี่ยนแปลงไม่ได้ / ไม่เปลี่ยนรูป (Array, Dictionary, Sets, Data) ในภาษา Swift แต่ฉันไม่เข้าใจวิธีสร้างคอลเล็กชันที่ไม่เปลี่ยนรูปใน Swift ฉันต้องการดูสิ่งที่เทียบเท่าใน Swift สำหรับสิ่งต่อไปนี้ใน Objective-C อาร์เรย์ที่ไม่เปลี่ยนรูป NSArray *imArray = [[NSArray alloc]initWithObjects:@"First",@"Second",@"Third",nil]; อาร์เรย์ที่ไม่แน่นอน NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@"First",@"Second",@"Third",nil]; [mArray addObject:@"Fourth"]; พจนานุกรมไม่เปลี่ยนรูป NSDictionary *imDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil]; พจนานุกรมไม่แน่นอน NSMutableDictionary *mDictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Value1", …

10
คุณทดสอบฟังก์ชันและการปิดเพื่อความเท่าเทียมกันอย่างไร?
หนังสือเล่มนี้ระบุว่า "ฟังก์ชันและการปิดเป็นประเภทอ้างอิง" แล้วคุณจะทราบได้อย่างไรว่าข้อมูลอ้างอิงเท่ากัน? == และ === ไม่ทำงาน func a() { } let å = a let b = å === å // Could not find an overload for === that accepts the supplied arguments

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