小编Leo*_*bus的帖子

如何在Swift中解包数组元素?(即Array <Int?> as Array <Int>)

让我说我有一个字符串数组,我想将它映射到一个Int数组我可以使用map函数:

var arrayOfStrings: Array = ["0", "a"]
let numbersOptional = arrayOfStrings.map { $0.toInt() }
// numbersOptional = "[Optional(0), nil]"
Run Code Online (Sandbox Code Playgroud)

Numbers现在是一个Int?数组,但我想要一个Int数组.我知道我可以这样做:

let numbers = arrayOfStrings.map { $0.toInt() }.filter { $0 != nil }.map { $0! }
// numbers = [0]
Run Code Online (Sandbox Code Playgroud)

但这似乎并不是很迅速.从Int数组转换?对于Array of Int,需要使用相当多的样板函数来调用filter和map.有更快捷的方法吗?

ios swift

6
推荐指数
3
解决办法
2672
查看次数

如何在Swift中创建十六进制颜色字符串UIColor初始化程序?

我正在使用此代码从十六进制值创建UIColor.它的工作完美.

extension UIColor {
convenience init(red: Int, green: Int, blue: Int) {
   assert(red >= 0 && red <= 255, "Invalid red component")
   assert(green >= 0 && green <= 255, "Invalid green component")
   assert(blue >= 0 && blue <= 255, "Invalid blue component")

   self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
}

convenience init(netHex:Int) {
   self.init(red:(netHex >> 16) & 0xff, green:(netHex >> 8) & 0xff, blue:netHex & 0xff)
}
}
Run Code Online (Sandbox Code Playgroud)

用法:

var textColor = UIColor(netHex: …
Run Code Online (Sandbox Code Playgroud)

int nsstring uicolor ios swift

6
推荐指数
1
解决办法
5512
查看次数

如何在Swift中将字节数组[UInt8]转换为hexa字符串

我发现如何将六进制字符串转换为字节[UInt8],但我还没有找到如何将字节[UInt8]转换为Swift中的六进制字符串

hexstring转换为string代码:

static func bytesConvertToHexstring(byte : [UInt8]) -> String {
    var string = ""

    for val in byte {
        //getBytes(&byte, range: NSMakeRange(i, 1))
        string = string + String(format: "%02X", val)
    }

    return string
}
Run Code Online (Sandbox Code Playgroud)

像这样的结果:

"F063C52A6FF7C8904D3F6E379EB85714ECA9C1CB1E8DFD6CA5D3B4A991269D60F607C565C327BD0ECC0985F74E5007E0D276499E1ADB4E0C92D8BDBB46E57705B2D5390FF5CBD4ED1B850C537301CA7E"
Run Code Online (Sandbox Code Playgroud)

UInt8 数组: [0, 11, 8, 15, 6, 6, 5, 8, 8, 4, 14, 14, 0, 0, 9, 12, 6, 4, 10, 6, 4, 8, 6, 2, 14, 2, 6, 13, 3, 3, 12, 4, 3, 12, 8, 13, 14, 4, …

swift

6
推荐指数
1
解决办法
6329
查看次数

Swift:indexOf的第二次出现

let numbers = [1,3,4,5,5,9,0,1]
Run Code Online (Sandbox Code Playgroud)

要找到第一个5,请使用:

numbers.indexOf(5)
Run Code Online (Sandbox Code Playgroud)

我如何找到第二次出现?

swift swift3.0.2

6
推荐指数
1
解决办法
1292
查看次数

Swift 3 Xcode 8中的FileManager和urlsForDirectory错误

我刚刚从beta 3进入Xcode 8 beta 4,但出于任何原因我得到的错误一直没有错误或直到beta 4发布.这里是错误" Value of type 'FileManager' has no member 'urlsForDirectory'"

我的代码:

 func setupRecorder(){

        let audioSession:AVAudioSession = AVAudioSession.sharedInstance()

        //ask for permission
        if (audioSession.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) {
            AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in
                if granted {
                    print("Permission Granted\n")

                    //set category and activate recorder session
                    do {
                        //----
                        let fileManager = FileManager.default
                        let urls = fileManager.urlsForDirectory(.documentDirectory, inDomains: .userDomainMask)
                        //----
                        let documentDirectory = urls[0] as URL
                        let soundURL = try! documentDirectory.appendingPathComponent("sound.m4a")

                        try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)

                        try self.soundRecorder = AVAudioRecorder(url: soundURL, settings: self.recordSettings)

                       let micInput …
Run Code Online (Sandbox Code Playgroud)

ios swift swift3

6
推荐指数
1
解决办法
5861
查看次数

如何从json对象初始化结构

我是新来的任何想法.如何从json对象初始化结构.我无法弄清楚我该怎么做.

{"user":{"name":"cruskuaka","email":"cristlika @ gmail.com","phoneNo":"018833455"},"address":{"house":"100","street" ":"B","town":{"town_id":"1","town_name":"戈尔韦市中心"},"city":{"city_id":"10","city_name":"Galway" },"address_id":"200","full_address":"100,B,戈尔韦市中心,戈尔韦"},"delivery_instruction":"no call","delivery_method":"1"}

这里所有的结构:

struct Contact  {
    let user : User
    let address : Address
    let deliveryInstruction : String
    let deliveryMethod : String
    init(dictionary: [String: Any]) {
        self.deliveryInstruction = dictionary["delivery_instruction"] as? String ?? ""
        self.deliveryMethod = dictionary["delivery_method"] as? String ?? ""
        self.address = Address(dictionary: dictionary["address"] as? [String:Any] ?? [:])
        self.user =  User(dictionary: dictionary["address"] as? [String:Any] ?? [:])
    }
  }
Run Code Online (Sandbox Code Playgroud)
struct User {
    let name : String
    let email : String
    let phoneNo : String
    init(dictionary …
Run Code Online (Sandbox Code Playgroud)

json swift swift3

6
推荐指数
1
解决办法
5168
查看次数

如何将文件写入位于Swift 4中Apple的Files App的文件夹?

我的Xcode项目中有一个XML文件,我想先把它保存到磁盘上,其次我怎么知道我是否成功保存了它?这是正确的方法吗?使用模拟器我导航到iOS 11中的新"文件"文件夹,我看不到它,但我不确定它是否应该存在?

guard let path = Bundle.main.url(forResource: "sample", withExtension: "xml") else {print("NO URL"); return}
    let sample = try? Data(contentsOf: path)


print("sample XML = \(String(describing: sample?.debugDescription))")

//put xml file on the device
let filename = getDocumentsDirectory().appendingPathComponent("sample.xml")
do {
    try sample?.write(to: filename)
} catch {
    print("ERROR")
}
Run Code Online (Sandbox Code Playgroud)

更新以包括我检查文件是否存在:

 //check if file exists
    let checkPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
    let url = URL(fileURLWithPath: checkPath)
let filePath = url.appendingPathComponent("sample.xml").path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
    print("FILE AVAILABLE")
} else { …
Run Code Online (Sandbox Code Playgroud)

xml ios swift

6
推荐指数
2
解决办法
6373
查看次数

如何检测我的设备是否是Swift 4中的iPhoneX?

我相信有更好,更合适的方法来做到这一点.但是现在我正在使用UIScreen.main.bounds来检测我是否正在处理iPhone X(812高).这个特定的应用程序只是景观,顺便说一句.所以这就是我在这个函数中所拥有的,我正在为幻灯片视图创建幻灯片:

func setupSlideViews(slideView: [SlideView]) {
    let screenSize = UIScreen.main.bounds

    var frame: CGRect!
    if screenSize.width == 812 {
        frame = scrollView.frame
    } else {
        frame = view.frame
    }
    scrollView.frame = frame
    scrollView.contentSize = CGSize(width: frame.width * CGFloat(slideViews.count), height: frame.height)

    for (i, slideView) in slideViews.enumerated() {
        slideView.frame = CGRect(x: frame.width * CGFloat(i), y: 0, width: frame.width, height: frame.height)
        scrollView.addSubview(slideView)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是你如何检查模型?

ios swift iphone-x

6
推荐指数
1
解决办法
5536
查看次数

如何在Swift中更改UIImage的颜色

我很快,我正在尝试生成一个接受UIImage和UIColor并返回UIImage重新着色的函数

我不使用UIImageView,这些只是我打算用作图标的UIImages.有没有什么好方法可以实现这个?

uiimage uicolor ios swift

6
推荐指数
2
解决办法
5310
查看次数

UIImage 在编码/解码时不等效

我一直在对我的模型进行一些测试,以确保当我将它们编码为 JSON 然后使用JSONEncoder/Decoder. 然而,我的一项测试失败了,罪魁祸首是UIImage。我已确保在编码/解码过程中没有抛出任何错误。

首先,这是有问题的测试:

func testProfileImageCodable() throws {
    let image = ProfileImage(UIImage(systemName: "applelogo")!)
    try XCTAssertTrue(assertCodable(image))
}
Run Code Online (Sandbox Code Playgroud)

这是我的“可编码性”测试,我确保编码/解码之前和之后类型相等:

func assertCodable<T: Codable & Equatable>(
    _ value: T,
    decoder: JSONDecoder = .init(),
    encoder: JSONEncoder = .init()
) throws -> Bool {
    let encoded = try encoder.encode(value)
    let decoded = try decoder.decode(T.self, from: encoded)
    
    return value == decoded
}
Run Code Online (Sandbox Code Playgroud)

首先,这是我的UIImage工作方式Codable

extension KeyedEncodingContainer {
    mutating func encode(_ value: UIImage, forKey key: Key) throws {
        guard let …
Run Code Online (Sandbox Code Playgroud)

json uiimage swift equatable jsondecoder

6
推荐指数
1
解决办法
730
查看次数

标签 统计

swift ×10

ios ×6

json ×2

swift3 ×2

uicolor ×2

uiimage ×2

equatable ×1

int ×1

iphone-x ×1

jsondecoder ×1

nsstring ×1

swift3.0.2 ×1

xml ×1