RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-333058

Иван Маслов's questions

Martin Hope
Иван Маслов
Asked: 2024-07-10 00:43:11 +0000 UTC

如何将textfield.text传递给URL参数

  • 5

我想获取从文本字段传递的单词的含义。 URL 如下所示:https://api.dictionaryapi.dev/api/v2/entries/en/word。这些值采用 json 格式。如何传递textField.text而不是word参数?这是代码:

struct URLQuery {
    
    static func buildURL(baseURL: String, params: [String: String]) -> String? {
        guard var components = URLComponents(string: baseURL) else {
            return nil
        }
        
        let queryItems = params.map { element in
            URLQueryItem(name: element.key, value: element.value)
        }
        
        if var componentsQueryItems = components.queryItems {
            componentsQueryItems += queryItems
            components.queryItems = componentsQueryItems
        } else {
            components.queryItems = queryItems
        }

        return components.url?.absoluteString
    }
guard let word = wordTextField.text,
let urlString = URLQuery.buildURL(baseURL:  "https://api.dictionaryapi.dev", params: [
                "api":"v2",
                "entries":"en",
                "<word>": word]),
let url = URL(string: urlString)
json
  • 1 个回答
  • 19 Views
Martin Hope
Иван Маслов
Asked: 2022-07-29 05:19:47 +0000 UTC

如何转换字符串?

  • 0

大家好!我需要将字符串“4{b3{a}}”转换为“baaabaaabaaabaaa”。使用正则表达式时如何从第一行提取数字?我的正则表达式:NSRegularExpression(模式:“[\^{az}\{1-9}$?]*”,选项:.caseInsensitive)

регулярные-выражения
  • 1 个回答
  • 10 Views
Martin Hope
Иван Маслов
Asked: 2022-05-14 21:03:34 +0000 UTC

在控制器之间同步和传输 CoreData 数据

  • 0
    Всем привет! У меня возник вопрос, как передавать данные из разных контроллеров в Entity? В приложении есть несколько контроллеров. По мере перехода от одного контроллера к другому инициализируются свойства Core Data. На данный момент данные, полученные в одном контроллере, пропадают при переходе на следующий. Как их сохранить и передать в другой контроллер? Вариант с массивом мне не подходит, кроме как в ScheduleViewController, где я отображаю список занятий. Мой код:
         '''
        //Здесь данные сохраняются
            private var teacher = Teacher()
            private var student = Student()
            
            override func viewDidLoad() {
                super.viewDidLoad()
               
                teacher = Teacher(context: context)
                student = Student(context: context)
            }
            
            private func savePassword () {
                
                if let text = teacherPasswordTextField.text,
                   text.count > 5 {
                    
                    do {
                        
                        teacher.name = teacherNameLabel.text
                        teacher.password = text
                        student.teacher = teacher
                        teacher.customers?.adding(student)
                        try context.save()
                        
                    }
                    
                    catch {
                        print(error.localizedDescription)
                    }
                }
            }
                  
          extension TeacherSignInViewController: UITextFieldDelegate {
            
            func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                savePassword()
                textField.resignFirstResponder()
                return teacherPasswordTextField.text!.count > 5
            }
        }
        '''
        // А здесь нет
         private func setUpTextFields () {
                nameTextField.delegate = self
                nameTextField.keyboardType = .namePhonePad
                
                passwordTextField.delegate = self
                passwordTextField.keyboardType = .namePhonePad
                
                /* MARK: Uncomment this line when publishing */
                // passwordTextField.isSecureTextEntry = true
                
            }
            
            private func fetchData () {
                
                guard teacher.name != nil,
                    teacher.password != nil
                
                else {
                    return
                }
                
                do {
                    
                    student.name = nameTextField.text
                    student.password = passwordTextField.text
                    try context.save()
                }
                
                catch {
                    print(error.localizedDescription)
                }
                
            }
        }
        
        extension RegistrationViewController: UITextFieldDelegate {
            
            func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                
                guard let text = textField.text else { return false }
                
                if textField == nameTextField && text.count > 3 {
                    passwordTextField.becomeFirstResponder()
                }
                
                if textField == passwordTextField && text.count > 5 {
                    textField.resignFirstResponder()
                }
             
                fetchData()
                
                return nameTextField.text!.count > 3 && passwordTextField.text!.count > 5
            
        }
        }
        '''
       
        @IBAction private func completionButtonTouchUpInside(_ sender: UIButton) {
        
                delegate?.lessonViewControllerDidSet(self)
                  dismiss(animated: true, completion: nil)
                
            }
        
        '''
         //Сюда переходит учитель после регистрации. Его данные после перехода сбрасываются
extension ScheduleViewController: LessonViewControllerDelegate {
            
            func lessonViewControllerDidSet(_ vc: LessonViewController) {
              
                let lesson = Lesson(context: context)
               
                lesson.date = vc.datePicker.date
                lesson.time = vc.timePicker.date
                lesson.subject = vc.subjectTextField.text
                
                guard 
                    teacher.name != nil,
                    teacher.password != nil
                else
                {
                    return
                }
                
                teacher.addToSchedule(lesson)
                lesson.teacherSchedule = teacher
                
                do {
                    try context.save()
                }
                catch {
                    print(error.localizedDescription)
                }
          
     DispatchQueue.main.async {
                self.tableView.reloadData()
            }
    
      '''
        
          [1]: https://isstatic.askoverflow.dev/V2Zb4.png
          [2]: https://isstatic.askoverflow.dev/uMHu1.png
swift
  • 1 个回答
  • 10 Views
Martin Hope
Иван Маслов
Asked: 2022-01-15 22:43:04 +0000 UTC

键盘不能正常工作

  • 0

我有这样一个问题:通过按“输入键”,键盘从第一个字段中消失,但没有出现在第二个字段中。当我手动转到第二个字段并输入文本时,我无法让键盘消失。我需要通过单击“输入键”将光标从第一个字段移动到第二个字段,然后在填写第二个字段后移除键盘。我的代码:

extension RegistrationViewController: UITextFieldDelegate {
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        
        if nameTextField.text!.count > 3, passwordTextField.text!.count > 5 {
           
            nameTextField.enablesReturnKeyAutomatically = true
            nameTextField.resignFirstResponder()
           
            passwordTextField.enablesReturnKeyAutomatically = true
            passwordTextField.resignFirstResponder()
            
        }
        
        else if nameTextField.text!.count > 3 {
           
            nameTextField.enablesReturnKeyAutomatically = true
            nameTextField.resignFirstResponder()
          
            passwordTextField = textField
            passwordTextField.resignFirstResponder()
        }
        
       
        else if passwordTextField.text!.count > 5 {
            passwordTextField.enablesReturnKeyAutomatically = true
            passwordTextField.resignFirstResponder()
        }
       
        else {
            
            preconditionFailure("Недостаточно символов")
        }
        
        return (nameTextField.text!.count > 3 && passwordTextField.text!.count > 5)
    }
  
   
}
swift
  • 1 个回答
  • 10 Views
Martin Hope
Иван Маслов
Asked: 2020-03-14 23:29:22 +0000 UTC

无法开启定时器

  • 0

我想让它在按下按钮时打开计时器,计算秒数,停止后,再次播放时,它从按下暂停时停止的秒数开始计数。但是现在我没有随着时间的推移而发生变化,尽管按钮上的图像发生了变化。编码:

//MusicViewController

private var second64: Int64?

private var second = TimeInterval()

private var time: String?

//В этом методе мы считаем секунды
    @objc private func countSeconds( _ : TimeInterval) -> TimeInterval{

        if second > 0.0{

           second -= 1.0

            second64 = Int64(second)
            time = TimeFormatter().convertTimeToString(second64)

        }



        return second
    }



  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

//Воспроизводим длительность аудиозаписи в основном потоке
           second64 = audio.duration
                    time = TimeFormatter().convertTimeToString(second64)



                    var timer = Timer()

                    if button.title(for: .normal) == "▶️"{
                        if button.isSelected{

                            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0){

                                timer = self.setTimer()



                                cell.durationLabel.text = self.time

                            }

                        }

                        else if button.title(for: .selected) == "⏸" {

                            if button.isSelected{
                            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0){
                                timer.invalidate()

                                cell.durationLabel.text = self.time
                            }
                            }
                    }
                    }
                }

                    else{
                    cell.singerLabel.text! = ""
                    cell.titleLabel.text! = ""
                }
}
//Метод в протоколе для взаимодействия с презентером.
func setTimer () -> Timer{

      let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(countSeconds(_:)), userInfo: nil, repeats: true)
    print(second)
      return timer
  }
}


class TimeFormatter{

private var seconds = TimeInterval()
//Метод, преобразующий время в нужный формат
private func timeFormatter (_ : TimeInterval) -> DateComponentsFormatter{
    let formatter = DateComponentsFormatter()
    // Длительность будет отображаться как 1:00:00
    if seconds > 59.59{
        formatter.allowedUnits = [.hour, .minute, .second]
    }

    else{
        formatter.allowedUnits = [.minute, .second]
    }

    formatter.unitsStyle = .positional
    formatter.zeroFormattingBehavior = .pad


    return formatter
}

//Метод, передающий информацию о длительности записи в приложение
func convertTimeToString(_ number: Int64?) -> String?{



    if let unwrappedNumber = number{

        seconds = TimeInterval(integerLiteral: unwrappedNumber)

        print(seconds)
    }

    let formatter = timeFormatter(seconds)
    let timeString = formatter.string(from: seconds)

    return timeString


}

}

UPD。现在我的代码如下所示: //MusicViewController

私有变量索引 = Int()

private var posts: [Post] = []

private var timer: Timer?

private var playingCell: MusicTableViewCell?{

    let count = store!.getPostsCount()

    for i in 0...count-1{

        index = i

        let post = store!.getPost(for: index)

        posts.append(post)
    }

    let indexPath = IndexPath(row: index, section: 0)

    return tableView.cellForRow(at: indexPath) as? MusicTableViewCell

私有函数重置(){

    guard let cell = playingCell, let button = cell.playButton, let post = store?.getPost(for: index), let attachments = post.attachments, let audio = attachments[index].audio else {return}

    button.isSelected = false

    second64 = audio.duration

    cell.second = cell.makeTimeIntervalFromInt(second64)

}

//方法在当前时刻停止音乐 private func pauseMusic() {

    guard let cell = playingCell, let playbutton = cell.playButton else {return}

    playbutton.isSelected = false

    timer?.invalidate()

}

私有变量 second64: Int64? //private let second = TimeInterval(integerLiteral: second64!)

扩展 MusicViewController: UITableViewDataSource, MusicTableViewCellDelegate{

func musicShouldStartPlaying(_ cell: MusicTableViewCell) {

    if cell !== playingCell{

        musicShouldStopPlaying(cell)

    }

    cell.playButton.isSelected = true

    timer = cell.setTimer()

}

func musicShouldStopPlaying(_ cell: MusicTableViewCell) {

    if cell.second == 0.0 || cell !== playingCell{

        cell.playButton.isSelected = false

        pauseMusic()

        reset()

    }

    else{
        cell.playButton.isSelected = false

        pauseMusic()

    }

    cell.playButton.isSelected = false

    pauseMusic()

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let button = cell.playButton!

    button.actions(forTarget: button, forControlEvent: .touchUpInside)
    cell.delegate = self
    cell.index = indexPath.row
    cell.second = cell.makeTimeIntervalFromInt(second64)
}
//MusicTableViewCell
 var second64: Int64?
var index: Int!

var second = TimeInterval()

private var time: String?

weak var delegate: MusicTableViewCellDelegate?
func makeTimeIntervalFromInt( _ : Int64?) -> TimeInterval{
    if let currentSecond = second64{
    second = TimeInterval(integerLiteral: currentSecond)
    }
    return second
}

//View 与 Presenter 协议 ViewProto 交互的协议:class {

//Метод, вызывающий презентер во View
func setPresenter(_ presenter: PresenterProto)

//Метод, обновляющий посты
func updateData()

// 函数重置()

}

// Presenter 交互协议与 View 协议 PresenterProto: class {

// Метод, вызывающий View в презентере
func viewLoaded(with view: ViewProto)

//Метод, позволяющий узнать количество постов в массиве
func getPostsCount() -> Int

//Показывает содержание конкретного поста
func getPost(for index: Int) -> Post

}

协议 MusicTableViewCellDelegate: class{ func musicShouldStartPlaying(_ cell: MusicTableViewCell)

func musicShouldStopPlaying(_ cell: MusicTableViewCell)

//func reset(_ cell: MusicTableViewCell)

}

'''

在此处输入图像描述

swift
  • 1 个回答
  • 10 Views
Martin Hope
Иван Маслов
Asked: 2020-08-25 03:12:48 +0000 UTC

如何更改按钮标题

  • 1

大家好!我想知道如何制作它,以便在单击按钮时,其名称会更改并且名称会保存到下一次单击。我试图创建一个布尔属性,并根据它的值为正常状态分配一个新标题,但我遇到了两个问题:1)标题没有变回。也就是说,如果我在标题中放了一个播放而不是暂停,它就不会回到暂停。2)无论条件如何,值都会改变。我还尝试将状态更改为突出显示,但不幸的是,在这种情况下,如果我将鼠标移开,则不会保存按钮的新名称。我想要相反的效果。任何想法如何做到这一点?


建议更改后,名称更改,但模拟器上的暂停按钮如下所示:在此处输入图像描述

swift
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5