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

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

4
วิธีกำหนดให้โปรโตคอลสามารถนำมาใช้โดยคลาสเฉพาะเท่านั้น
ฉันต้องการโปรโตคอลนี้: protocol AddsMoreCommands { /* ... */ } จะนำมาใช้โดยคลาสที่สืบทอดจากคลาสUIViewControllerเท่านั้น หน้านี้บอกฉันว่าฉันสามารถระบุได้ว่ามันถูกนำมาใช้โดยคลาสเท่านั้น (เมื่อเทียบกับโครงสร้าง) โดยการเขียน protocol AddsMoreCommands: class { } แต่ฉันไม่เห็นวิธีการกำหนดว่าจะต้องใช้เฉพาะคลาสใดคลาสหนึ่งเท่านั้น หน้านั้นพูดถึงการเพิ่มwhereส่วนขยายของโปรโตคอลในภายหลังเพื่อตรวจสอบความสอดคล้อง แต่ฉันไม่สามารถดูวิธีปรับเปลี่ยนได้ extension AddsMoreCommands where /* what */ { } มีวิธีทำไหม? ขอบคุณ!

8
ซ่อนแถบแท็บในแอป IOS swift
ฉันกำลังพยายามหาวิธีซ่อนแถบแท็บในแอพที่รวดเร็วของ iOS ฉันไม่สนใจเกี่ยวกับแอนิเมชั่นแฟนซีหรืออะไรเลย ฉันสามารถใส่บางอย่างในฟังก์ชัน ViewDidLoad () ได้
92 ios  swift 


13
ตรวจสอบว่าตัวละครใน String เป็นอีโมจิหรือไม่?
ฉันต้องการค้นหาว่าอักขระในสตริงเป็นอีโมจิหรือไม่ ตัวอย่างเช่นฉันมีตัวละครนี้: let string = "😀" let character = Array(string)[0] ฉันต้องการค้นหาว่าตัวละครนั้นเป็นอีโมจิหรือไม่
92 ios  string  swift  character  emoji 

2
Initializer ไม่สามารถเข้าถึงได้เนื่องจากระดับการป้องกัน "ภายใน"
ฉันมีโปรโตคอลบางอย่าง เข้าสู่ระบบกลยุทธ์ public protocol LoginStrategy { func login(_ viewController: UIViewController) func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) func getUserId() -> String } และสองคลาส: เข้าสู่ระบบ public class LoginProvider { public let strategy: LoginStrategy public func login(_ …

4
โมดูลที่คอมไพล์ด้วย Swift 5.1 ไม่สามารถนำเข้าโดยคอมไพเลอร์ Swift 5.1.2
ฉันมีกรอบ (ในกรณีนี้คือ RxSwift) ซึ่งฉันได้รวบรวมโดยใช้ Xcode 11.0 เป็นRxSwift.frameworkแพ็คเกจสไตล์ดั้งเดิม สิ่งนี้นำเข้าที่ดีใน Xcode 11.0 และ 11.1 ไม่เคยมีปัญหาใด ๆ กับมัน วันนี้เมื่อเปิดตัว Xcode 11.2 ของ Apple ฉันได้รับการอัพเกรดและมีข้อผิดพลาด: โมดูลที่คอมไพล์ด้วย Swift 5.1 ไม่สามารถนำเข้าโดยคอมไพเลอร์ Swift 5.1.2 ฉันใช้ไม่ตรงกันรวดเร็วคอมไพเลอร์และฉันรู้ฉันก็สามารถคอมไพล์ RxSwift ใช้ Xcode 11.2 และดำเนินการใน แต่คุณลักษณะพาดหัวของสวิฟท์ 5.1 เป็นความมั่นคงโมดูล ฉันรู้สึกว่าตอนนี้เรามีความเสถียรของโมดูลแล้วเฟรมเวิร์กไม่จำเป็นต้องทำการคอมไพล์ใหม่ด้วย Xcode ใหม่ทุกครั้ง แต่นี่ไม่ใช่กรณีที่ชัดเจน หากใครสามารถอธิบายสิ่งที่เกิดขึ้นที่นี่ฉันจะขอบคุณมันมาก Xcode 11.2 แสดงข้อผิดพลาดหรือไม่? หรือฉันต้องการที่จะบอกว่าฉันต้องการเสถียรภาพโมดูลเมื่อฉันรวบรวมด้วย Xcode 11.0?
91 ios  swift  xcode  swift5.1 

7
คลาสที่สอดคล้องกับโปรโตคอลเป็นพารามิเตอร์ของฟังก์ชันใน Swift
ใน Objective-C สามารถระบุคลาสที่สอดคล้องกับโปรโตคอลเป็นพารามิเตอร์วิธีการได้ ตัวอย่างเช่นฉันสามารถมีวิธีการที่อนุญาตเฉพาะUIViewControllerที่สอดคล้องกับUITableViewDataSource: - (void)foo:(UIViewController<UITableViewDataSource> *)vc; ฉันหาวิธีทำใน Swift ไม่เจอ (อาจจะยังทำไม่ได้) คุณสามารถระบุหลายโปรโตคอลโดยใช้func foo(obj: protocol<P1, P2>)แต่คุณต้องการให้อ็อบเจ็กต์เป็นคลาสเฉพาะด้วยได้อย่างไร
91 swift 

6
Swift - วิธีคลาสที่ต้องถูกแทนที่โดยคลาสย่อย
มีวิธีมาตรฐานในการสร้าง "ฟังก์ชันเสมือนจริง" ใน Swift หรือไม่เช่น. สิ่งที่ต้องถูกแทนที่โดยทุกคลาสย่อยและข้อใดไม่ทำให้เกิดข้อผิดพลาดเวลาคอมไพล์

21
ITMS-90809: เลิกใช้งาน API - Apple จะหยุดรับการส่งแอพที่ใช้ UIWebView API
เมื่อวานนี้ฉันอัปโหลดแอปของฉันไปที่ TestFlight และหลังจากนั้นไม่นาน Apple ก็ส่งคำเตือนนี้ให้ฉัน: ITMS-90809: เลิกใช้งาน API - Apple จะหยุดรับการส่งแอพที่ใช้ UIWebView API ดูhttps://developer.apple.com/documentation/uikit/uiwebviewสำหรับข้อมูลเพิ่มเติม สิ่งนี้คือฉันไม่ได้ใช้ UIWebView ในแอพของฉันดังนั้นฉันจึงพยายามอัปเดตพ็อดของฉัน แต่ก็ยังเหมือนเดิมโดยวิธีนี้เป็นงานสร้างที่ 3 ของฉันใน TestFlight และนี่เป็นครั้งแรกที่ Apple ส่งสิ่งนี้มาให้ฉัน ความคิดใด ๆ ? อัปเดต นี่คือฝักของฉัน: pod 'Firebase/Core' pod 'Firebase/Firestore' pod 'Firebase/MLVision' pod 'Firebase/MLVisionTextModel' pod 'SVProgressHUD' pod 'SPPermission/Camera' pod 'SPPermission/PhotoLibrary' pod 'Mantis' pod 'SwiftKeychainWrapper' pod 'SwiftyOnboard' pod …

17
รับวันในสัปดาห์โดยใช้ NSDate
ฉันสร้างเมธอดที่ควรใช้เป็นสตริงในรูปแบบ "ปปปป - ดด - วว" และพ่น int ที่แสดงถึงตำแหน่งวันที่ที่สัมพันธ์กับสัปดาห์ที่เป็นอยู่ (ไม่ว่าจะทับซ้อนกันระหว่างเดือน) เช่นวันอาทิตย์ = 1 วันจันทร์ = 2 เป็นต้นไป นี่คือรหัสของฉัน: func getDayOfWeek(today:String)->Int{ var formatter:NSDateFormatter = NSDateFormatter() formatter.dateFormat = "YYYY-MM-DD" var todayDate:NSDate = formatter.dateFromString(today)! var myCalendar:NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar) var myComponents = myCalendar.components(NSCalendarUnit.WeekdayOrdinalCalendarUnit, fromDate: todayDate) var weekDay = myComponents.weekdayOrdinal return weekDay } ฉันรู้ว่าNSCalendarUnit.WeekdayOrdinalCalendarมันผิด …

13
ฉันจะเรียกใช้คำสั่งเทอร์มินัลในสคริปต์ Swift ได้อย่างไร (เช่น xcodebuild)
ฉันต้องการแทนที่สคริปต์ทุบตี CI ของฉันด้วยความรวดเร็ว ฉันไม่สามารถหาวิธีเรียกใช้คำสั่งเทอร์มินัลปกติเช่นlsหรือxcodebuild #!/usr/bin/env xcrun swift import Foundation // Works println("Test") // Works ls // Fails xcodebuild -workspace myApp.xcworkspace // Fails $ ./script.swift ./script.swift:5:1: error: use of unresolved identifier 'ls' ls // Fails ^ ... etc ....
91 swift  bash  shell  xcodebuild 

4
Swift- ลบหมายเลข Push Notification Badge?
ฉันกำลังพยายามลบตราสัญลักษณ์อย่างรวดเร็ว แต่ดูเหมือนว่า PFInstallation จะใช้งานไม่ได้อีกต่อไป ฉันต้องทำอย่างไร
91 swift 

21
Cocoapods + ไม่สามารถโหลดโมดูลพื้นฐานสำหรับ 'x'
ฉันใช้ XCode 7, Swift 2.0, iOS 9 ฉันต้องการติดตั้ง Alamofire ในโปรเจ็กต์ของฉันโดยใช้ Cocoapods ฉันได้ทำสิ่งต่อไปนี้แล้ว: gem install cocoapods pod setup pod init อัปเดต Podfile เป็น: # Uncomment this line to define a global platform for your project # platform :ios, '9.0' use_frameworks! target 'JSONeg' do pod 'Alamofire', :branch => 'swift-2' end จากนั้นฉันติดตั้งพ็อด: pod …

4
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อม CG_CONTEXT_SHOW_BACKTRACE ได้อย่างไร
ฉันมีปุ่มสามปุ่มในมุมมองของฉัน หลังจากตั้งค่า cornerRadus ใน viewDidLoad ():button.layer.cornerRadius = 20ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ในบันทึก: <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. คำถาม: ฉันจะตั้งค่าตัวแปรสภาพแวดล้อม CG_CONTEXT_SHOW_BACKTRACE ได้อย่างไร หรือจะแก้ไขคำเตือนนี้ได้อย่างไร? โอเคฉันได้รับการติดตามย้อนหลังแล้วจากข้อความ มันไม่สมเหตุสมผลกับฉันเลย ช่วยกรุณา ... Aug 7 14:27:00 <Error>: CGContextSaveGState: invalid context 0x0. Backtrace: <-[UIStatusBarItemView updateContentsAndWidth]+33> <-[UIStatusBarItemView initWithItem:data:actions:style:]+477> <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134> <-[UIStatusBarLayoutManager …

2
รวดเร็ว: การประกาศปิดเช่นเดียวกับการประกาศบล็อก
เราสามารถประกาศบล็อกดังต่อไปนี้ใน Objective-C typedef void (^CompletionBlock) (NSString* completionReason); ฉันพยายามทำสิ่งนี้อย่างรวดเร็วมันให้ข้อผิดพลาด func completionFunction(NSString* completionReason){ } typealias CompletionBlock = completionFunction ข้อผิดพลาด: การใช้ 'completeFunction' ที่ไม่ได้ประกาศ คำจำกัดความ: var completion: CompletionBlock = { } ต้องทำอย่างไร? อัปเดต: ตามคำตอบของ @jtbandes ฉันสามารถสร้างการปิดโดยมีอาร์กิวเมนต์หลายรายการได้ตามต้องการ typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
90 ios  swift 

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