我是swift的新手,但是从ObjectiveC背景来看,我试图通过单击按钮从textfield获取输入到var.
现在,当我尝试使用"stringByTrimmingCharactersInSet"和许多其他选项删除空格时,它不起作用.这是我的代码,
var someVariable = urlInputComponent.text!
if someVariable.containsString(" "){
someVariable = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
print(someVariable)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将结果分配给一个新的var,
let trimmed: String = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
print(trimmed)
Run Code Online (Sandbox Code Playgroud)
但仍然无法删除空白.我的猜测是我对"Unwrapped value"这个概念感到困惑,如果有人可以帮助我,那将会非常有帮助.谢谢!
我有一个长的numpy数组,带有风向记录,unwrap在运行算法来检测数据中的跳跃之前,我试图使用numpy的数组。数据包含NaN,而numpy似乎无法处理此问题。一旦遇到一个NaN,所有随后返回的数据点unwrap也将转换为NaN。有没有解决的办法?
我认为我的问题可以归结为与此处发布的问题相同,但是只能得出结论,该错误与数据中的NaN有关,并且没有提供解决方案。
有什么方法可以简化以下示例中的返回(最初从这里复制):
use std::num::ParseIntError;
fn multiply(first_number_str: &str, second_number_str: &str) -> Result<i32, ParseIntError> {
let first_number = match first_number_str.parse::<i32>() {
Ok(first_number) => first_number,
Err(e) => return Err(e),
};
let second_number = match second_number_str.parse::<i32>() {
Ok(second_number) => second_number,
Err(e) => return Err(AnotherError::ParseError("error")),
};
Ok(first_number * second_number)
}
Run Code Online (Sandbox Code Playgroud)
我的意思是:
use std::num::ParseIntError;
fn multiply(first_number_str: &str, second_number_str: &str) -> Result<i32, ParseIntError> {
let first_number = first_number_str.parse::<i32>()
.unwrap_or_return(|e| Err(e));
let second_number = second_number_str.parse::<i32>()
.unwrap_or_return(|e| Err(AnotherError::ParseError("error"));
Ok(first_number * second_number)
}
Run Code Online (Sandbox Code Playgroud) 在 Rust 程序中,我使用 a Result,它使用 aString作为其Error类型:
fn foo() -> Result<String, String>
我作为错误返回的字符串看起来像这样:
lorem\nipsum
现在我调用我的函数并将其解包如下:
foo.unwrap();
现在,当foo()返回 an时Error,它会打印错误,如下所示:
lorem\nipsum
然而,我实际上想看到的是以下错误消息:
lorem
ipsum
Run Code Online (Sandbox Code Playgroud)
据我所知,这种行为的原因是unwrap(),在字符串的情况下,调用debug()而不是display()which 的实现方式不同(新行显示为新行,但调试打印为“\n”) 。
有没有一种快速的方法可以让我以一种调用的方式 unwrap() 我的结果,而display()不是debug()让打印的错误实际显示换行符而不是“\n”?
我有QR Code生成器正在工作,它会向我显示图像qrImageView UIImageView。
现在,我要做的就是将该QR Code图片附加到电子邮件中。尝试了下面指定的代码,但出现错误“在展开可选值时发现nil”。
请帮忙!
产生QR CODE的功能
func generateQRCode(from string:String) -> UIImage? {
let data = string.data(using: String.Encoding.isoLatin1)
if let filter = CIFilter(name:"CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
let transform = CGAffineTransform(scaleX: 100, y: 100)
if let output = filter.outputImage?.applying(transform) {
return UIImage(ciImage: output)
}
}
return nil
}
@IBAction func generateAction(_ sender: Any) {
if let actualText = qrCodeTextField.text {
let image = generateQRCode(from: actualText)
qrImageView.image = image
}
}
Run Code Online (Sandbox Code Playgroud)
用于将QR代码附加到电子邮件的代码
func configureMailController() -> MFMailComposeViewController {
let …Run Code Online (Sandbox Code Playgroud) 我试图得到一个实例NSParagraphStyle.default.mutableCopy()但是我们确定它mutableCopy()总是包含一个值吗?
var paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
Run Code Online (Sandbox Code Playgroud)
如果没有强行解缠,是否可以做到这一点?
我有这个游乐场:
import Foundation
enum WeekDay: Int {
case mon, tues, wed, thurs, fri, sat, sun
}
let wd = WeekDay(rawValue: 0)! // mon
let param = [wd: [1, 2, 3]]
message(dict: param)
func message(dict: [AnyHashable: [Int]?]) {
for (k, v) in dict {
print(k, type(of: k), v) // mon AnyHashable Optional([1, 2, 3])
if let k = k as? WeekDay {
print("got it: \(k)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我永远不会被got it: ...打印出来.
为什么我不能从一个人投AnyHashable来WeekDay?
我想AnyHashable在函数中使用的原因 …
使用时unwrap_or,如何获得String?
我已经将我的问题归结为此(使用更多类型注释而不是需要):
fn main() {
let mut blah: String;
let opt: Option<&str> = Some("foo");
blah = opt.unwrap_or("bar");
}
Run Code Online (Sandbox Code Playgroud)
这(合理地)告诉我,我们需要一个String不是&str.
error[E0308]: mismatched types
--> src/main.rs:33:12
|
33 | blah = opt.unwrap_or("bar");
| ^^^^^^^^^^^^^^^^^^^^ expected struct `std::string::String`, found &str
|
= note: expected type `std::string::String`
= note: found type `&str`
Run Code Online (Sandbox Code Playgroud)
所以我尝试提供想要的类型.
blah = opt.unwrap_or("bar".to_string());
Run Code Online (Sandbox Code Playgroud)
但我被告知:
error[E0308]: mismatched types
--> src/main.rs:33:26
|
33 | blah = opt.unwrap_or("bar".to_string());
| ^^^^^^^^^^^^^^^^^ expected &str, found struct `std::string::String`
| …Run Code Online (Sandbox Code Playgroud) 我Cannot force unwrap value of non-optional type 'Reachability'在行上收到针对iOS 13(Swift 5)的警告xcode 11.1
let reachability = Reachability()!
我尝试了if语句并尝试执行,但是似乎都没有用。给出警告“调用可以抛出,但错误不能从属性初始化器抛出”
import Reachability
class ReachabilityDetect {
let reachability = Reachability()!
var dm = DataModel()
func addObservers(datamodel: DataModel) {
self.dm = datamodel
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
do{
try reachability.startNotifier()
}catch{
Util.DLog("Reachability notifier niet te starten.")
}
}
@objc func reachabilityChanged(note: Notification) {
let reachability = note.object as! Reachability
switch reachability.connection {
case .wifi:
Util.DLog("WiFi is actief")
self.dm.dataConnectionisWifi = true
self.dm.dataConnectionisCellular = …Run Code Online (Sandbox Code Playgroud)