gpt4 book ai didi

swift - 类型 'Tags' 的值没有成员 'lastUsed'

转载 作者:行者123 更新时间:2023-12-04 08:25:24 25 4
gpt4 key购买 nike

我有一个类,标签,在 Swift 中。

public class Tags {
var lastUsed​: UInt64
var frequency: Int
var id: String
var name​: String

init(id: String = "", frequency: Int, lastUsed: UInt64, name: String) {
self.id = id
self.frequency = frequency
self.lastUsed​ = lastUsed
self.name​ = name
}
}
我可以从我的项目中的某些类访问字段,但有趣的是我似乎无法从某些类访问某些字段。
违规字段是 lastUsedname .
当我跑 在工作区中查找选定符号 ,我发现这些字段在引用它们的某些文件中是可见的,而在其他文件中是不可见的。
我实际上可以访问该类的其他字段 Tags在类里。
我无法从中访问它的类具有以下定义:
import RealmSwift


class StoredTags: Object{

@objc dynamic var frequency: Int
@objc dynamic var id: String
@objc dynamic var lastUsed​: UInt64
@objc dynamic var name​: String


init(freq: Int, id: String, lastUsed: UInt64, name: String){
self.lastUsed​ = lastUsed
self.name​ = name
self.frequency = freq
self.id = id
}

init(t: Tags){
self.lastUsed​ = t.lastUsed. //Error-- Value of type 'Tags' has no member 'lastUsed'
self.name​ = t.name​
self.frequency = t.frequency
self.id = t.id

}
class func getFromTags(t: Tags) -> StoredTags{
let st = StoredTags()
st.frequency = t.frequency
st.id = t.id
st.lastUsed​ = t.lastUsed//Error-- Value of type 'Tags' has no member 'lastUsed'
st.name​ = t.name//Error-- Value of type 'Tags' has no member 'name'

return st

}

required override init() {
self.frequency = 0
self.id = ""
self.lastUsed​ = 0
self.name​ = ""
}



}
enter image description here
我怀疑这可能是 xcode 的一些问题;但我已经尝试了所有想到的。
请问这里可能是什么问题?

最佳答案

问题在于 name 的声明和 lastUsed有一个不可见的字符 (U+200B = "ZERO WIDTH SPACE") 作为标识符的最后一个字符。
这是一个简短的例子,展示了似乎是一个悖论。第一个打印语句不编译,但最后一个编译:

struct Tags {
let name​ = "name"
}

print(Tags().name) // (1) Error: Value of type 'Foo' has no member 'name'
print(Tags().name​) // (2) No error
不幸的是,即使打开了“Editor->Invisibles”,Xcode 也不会显示这个字符。在 vi 中打开文件显示问题:
struct Tags {
let name<200b> = "name"
}

print(Tags().name) // (1) Error: Value of type 'Foo' has no member 'name'
print(Tags().name<200b>) // (2) No error
请注意,标识符名称中允许使用不可见字符,这已在 Swift forum 中讨论过。 .
第一个打印语句是使用 Xcode 的代码完成创建的,Xcode 省略了尾随的不可见字符。我会认为这是一个错误。
第二个打印语句是通过仔细复制 name​ 创建的。标识符,包括尾随的不可见字符。
总结:Swift 标识符可以包含不可见的字符,但这些字符不能很好地与 Xcode 的代码完成配合使用,只会引起混淆。重写所有出现的这些标识符可以解决这个问题。

关于swift - 类型 'Tags' 的值没有成员 'lastUsed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65284543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com