我有一个 SwiftUI 文本标签,我想在按下按钮后在其中写一些东西。
这是我的代码:
Button(action: {
registerRequest() // here is where the variable message changes its value
}) {
Text("SignUp")
}
Text(message) // this is the label that I want to change
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
从今天发布的 iOS 14.0 开始,我的 iOS 代码(严重依赖 GeometryReader 进行布局)不再运行良好。即,布局已经有点随机。
在 Xcode 调试器中,我比较了在 iOS 13.6 和 iOS 14.0 上运行的相同代码,发现问题在于 iOS 14.0 中未初始化 GeometryProxy 结构。
在变量 g 下方的示例代码中,GeometryProxy 在 iOS 13 中具有有效的宽度和高度值,但在 iOS 14 中全部为零。(这只是我对 GeometryProxy 值所做的更简单的使用之一——如果没有人,我将不胜感激指出一个明显的事实,这个片段可以通过另一种方式更容易地完成。)
这是对 GeometryReader 的更改还是错误?有人有解决方法吗?我是否在依赖 GeometryReader 进行动态布局时犯了一个巨大的错误?
struct TextView: View {
@EnvironmentObject var data: RecorderData
let m = MusicalNote()
var body: some View {
GeometryReader { g in
Stack(alignment: .leading) {
Text(self.data.curNote.getString())
.font(.system(size: g.size.height / 2.4))
.padding(.bottom)
Text(self.data.fdata.fingerings[self.data.curRecorder.id] ![self.data.curNote.seq] ![self.data.curFingType] ![self.data.currentFingeringChoice].comment)
.font(.headline)
}
Spacer()
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Swift combine 运行许多具有相同结果的任务。目前,每个任务都是一个将发出结果的发布者。现在我面临一个问题,我必须等待所有发布者发出元素然后继续。有点像调度组。我发现 zip(with: : :_) 操作符需要 4 个发布者。
https://developer.apple.com/documentation/combine/passthroughsubject/3333571-zip
但是如果您有一组发布者(以防它们发出相同类型的元素)怎么办?有没有办法做到这一点?
好的团队,这很奇怪.[NSDecimalNumber integerValue]表现得很奇怪.
我坐在一个断点处,试图弄清楚为什么我的应用程序的某些部分在iOS8中被破坏了,而我正在查看一个名为"timeSeconds"的变量.在Xcode变量视图中看起来像这样:
_timeSeconds (NSDecimalNumber *) 344.514533996581994496
Run Code Online (Sandbox Code Playgroud)
但是当我在调试器中查询它时,我看到了这个:
(lldb) p [self.timeSeconds doubleValue]
(double) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds integerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344
Run Code Online (Sandbox Code Playgroud)
看到"-5"?在我提交雷达之前,你们中的任何人都可以复制或解释这些吗?
这是SSCCE:
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"344.514533996581994496"];
NSLog(@"%@", n); // 344.514533996581994496
NSLog(@"%ld", (long)[n intValue]); // 344
NSLog(@"%ld", (long)[n integerValue]); // -5
NSLog(@"%ld", (long)[n unsignedIntegerValue]); // 12
Run Code Online (Sandbox Code Playgroud)
提前致谢!
马修
好奇如果有办法在Swift中执行以下操作.
let foo = [1, 2, 3]
let bar = [4, 5, 6]
let value = 5
switch value {
case in foo
print("5 is in foo")
case in bar
print("5 is in bar")
default:
break
}
Run Code Online (Sandbox Code Playgroud)
我理解还有其他方法可以使这个人为的例子工作,比如case 4, 5, 6:使用或不使用开关而是使用,bar.contains(value)但我正在寻找一个专门涉及到数组的开关模式匹配的解决方案.谢谢!
我检查了文档,方法在那里。
当我查看 .h 文件时,我确实看到了该功能。我尝试清理和重建,但在迁移到 Swift 4 后仍然出现此错误。
“NSAttributedString”类型的值没有成员“addAttributes”
在以下方面:
var options:[NSAttributedString.DocumentReadingOptionKey : Any] = [NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html]
var attributedString = try NSAttributedString(data: data, options: options, documentAttributes: nil)
let range = (attributedString.string as NSString).range(of: attributedString.string)
attributedString.addAttributes(baseAttributes, range: range) // ERROR!
Run Code Online (Sandbox Code Playgroud) 在swift中,字符串是结构类型,因此值将存储在堆栈内存而不是堆中.
让我们说我们声明一个字符串:
let a = ""
let b = "o"
Run Code Online (Sandbox Code Playgroud)
这是一个空字符串,但是分配了一些内存.我需要知道给空字符串和字符串的内存有什么不同,让我们说计数1.
如果我们说: -
var str:String?
var str: String = ""
Run Code Online (Sandbox Code Playgroud)
通过绘图的内存布局的差异是我需要看到的.(堆栈/堆).
我试图在谷歌上找到这个,但我无法找到这个内存布局.
我是 RxSwift 编程的新手。编码时我对两者感到困惑。应该使用哪一个来存储表的数据源以及如何决定?
如何快速开始和结束一周?这是我的代码
extension Date {
var startOfWeek: Date? {
let gregorian = Calendar(identifier: .gregorian)
guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
return gregorian.date(byAdding: .day, value: 1, to: sunday)
}
var endOfWeek: Date? {
let gregorian = Calendar(identifier: .gregorian)
guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
return gregorian.date(byAdding: .day, value: 7, to: sunday)
}
}
Run Code Online (Sandbox Code Playgroud)
我这样打电话
let startWeek = Date().startOfWeek
let endWeek = Date().endOfWeek
print(startWeek!)
print(endWeek!)
var dateFormat1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在保存a的内容时优化存储空间NSTextView,即其NSTextStorage属性本身a NSAttributedString.
将其保存为Data,例如使用该rtfd(from:documentAttributes:)方法,并作为Codable结构的一部分,会产生非常大的字符串,比内容本身大得多,尤其是在将图像插入到内容中时NSTextView.例如,插入200K图像将生成5MB的JSON文件.
旁注:当Data对象直接编码而不是编码对象的属性时更糟糕,因为它是以小整数数组的形式编码而不是任意字符串.我不知道为什么,虽然我能够通过插入Data一个简单的包装结构来防止这种情况.
奇怪的是,使用ZIP压缩实际的JSON文件仍然会产生4MB的文件,只有20%的增益,因此我不清楚200K图像如何变成如此庞大,难以压缩的编码字符串.
我想弄清楚NSAttributedString使用Codable协议有效存储的正确方法是什么.非常感谢任何提示或建议.
我也想知道是否有一个有效的二进制编码选项Codable.