我刚刚开始熟悉JSON。我有一个类对象,我正在通过传入一个JSON来初始化它。这个对象有一个可能是空的数组,我需要检查它的值。到目前为止,我正在努力:
init(json: JSON) {
id = json["id"].string
type = json["type"].string
text = json["text"].string
answer = json["answer"].string
format = json["format"].string
在最新的SWIFT2.2更新之前,我有一段代码似乎可以工作,但是现在它不能工作了。下面是代码的相关摘录。
class Event {
var eventObjectID:NSManagedObjectID?
var eventDate:NSDate?
var eventNotes:String?
var eventType:String?
init(eventObjectID: NSManagedObjectID, eventDate: NSDate, eventNotes: String, ev
我正在使用Repository模式,并试图构建一个通用方法,因为我有几个对象以相同的方式从它们的存储库中提取:
我的存储库就是以这种方式创建的:
public interface IEntityRepository<T> : IDisposable
public interface IAuditorRepository : IEntityRepository<Auditor>
public class AuditorRepository : IAuditorRepository
如果将审计类定义为:
public class BaseEntity : IObject
在Xcode游乐场中尝试使用一系列闭包时,我收到了以下错误:
Playground execution failed: error: closures.playground:11:25: error: ambiguous use of operator '*'
{x in x * x},
我不认为这在语法上不起作用的原因,但它应该会起作用。
我的初步结论是:
let f = {(x: Int) -> Int
in
return x + 42}
然后我定义了一个数组:
let closures = [f,
{(
import Foundation
import Swift
var buff = [UInt8](count: 256, repeatedValue: 0)
var index: UInt8
index = 0
for var i = 0; i < 256; ++i {
buff[i] = index;
++index
}
当我在for循环之外增加索引时,它工作得很好。但是,当我在for循环中增加索引时,如上面的代码所示,我会得到以下错误
1
0 swift 0x000000010ea31fbb llvm::sys::PrintStackTr
在swift中,这是失败的
struct Node {
var val: String
var parent: Node
}
with error错误:值类型'Node‘不能具有递归包含它的存储属性
但这是可行的
struct Node {
var val: String
var parent: [Node]
}
这种行为背后的原因是什么?
我创建操场并编写以下代码:
var a = [1, 2, 3]
var b = a
a === b
操场给了我错误Type '[Int]' does not conform to protocol 'AnyObject'。
我做错了什么?
我用的是XCode 6转基因种子。
更新
这段代码摘自“Swift编程语言”一书,书中说:
“Check whether two arrays or subarrays share the same storage and elements by comparing them with the identity operat
当我将枚举添加到泛型类时,为什么会出现错误:
class TestClass<T>{
enum TestEnum {
case test
}
}
错误:
1. While type-checking 'ExampleTest' at /Users/xxx/xxx/xx/xx/ExampleTest.swift:11:1
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swi
我正在尝试从Java切换到Swift,并提高我在这门语言中的编程技能。 然而,在研究了以下内容后,我在理解泛型在Swift中的工作方式时遇到了一些困难: https://docs.swift.org/swift-book/LanguageGuide/Generics.html 我已经开始通过编写一些协议来编写遗传算法。 protocol Point : Equatable {
var identifier: String { get }
var x: Double { get }
var y: Double { get }
func distance<P
使用下面的代码,clang3.0给出了error: lookup of 'N' in member access expression is ambiguous,而clang3.4和gcc 4.8都没有错误地接受代码。
struct B
{
struct M
{
void f()
{
}
};
};
namespace N
{
struct M
{
void f()
{
}
};
}
template<typename>
在Swift 3中,我有两个变量声明如下:
let patternArray = [true,true,false,true,true,false,true,true]
var resultArray = [Bool]()
在我后面的代码中,我有这样的代码,以获取数组的一部分:
resultArray = patternArray [0..<4]
编译时,我收到以下错误消息:
Cannot subscript a value of type '[Bool]' with an index of type 'CountableRange<Int>'
可以在Swift中执行以下操作:
let params: String
if let aString = someOptionalString {
params = "?someparam=\(aString)"
} else {
params = ""
}
不过,如果我能写成这样的话,就会更简洁了:
let params = let aString = someOptionalString ? "?someparam=\(aString)" : ""
或
let params = case let aString
尝试使用创建一个零矩阵。出于某些原因,当我在命令行上尝试时,它可以工作:
buildMatrix 2 3 (\(r,c) -> fromIntegral 0)
然而,当我尝试在我的代码中做同样的事情时:
type Dim = (Int, Int)
buildFull :: Matrix Double -> Vector Int -> Vector Int -> Dim -> Int
buildFull matrix basic nonbasic (m, n) = do
-- Build mxn matrix of zeroes
let f = b
用C创建一个时基信息结构很容易,但在Swift中,以下内容在操场上不起作用:
let timebaseInfo: mach_timebase_info_data_t = mach_timebase_info(&timebaseInfo)
错误是Variable used within its own initial value
我理解错误,但我想不出一种方法来做到这一点,而不下降到C.是否有一个Swift唯一的方式,我错过了?任何帮助都将不胜感激。:-)
编辑:实际上我看到了上面的"A“问题,"=”是没有道理的。但我也尝试了以下几点:
let timebaseInfo:
根据我所了解到的,我理解Swift字符串不能被整数值索引。但我很好奇指数的类型是什么,或者有没有。我在Xcode palyground中编写了以下代码:
let greeting = "Hello! Tom"
let index = greeting.startIndex
通过点击键并单击索引值,Xcode推断索引类型为 index (请参见下面的附图)。但是,当我将第二行更改为
let index: Index = greeting.startIndex
我收到了来自Xcode的两个错误警告
error: use of undeclared type 'Inde
鉴于下面的扩展..。
extension Double {
typealias Triple = (Double, Double, Double)
static let pythagoreanTriple: Triple = (3, 4, 5)
}
..。为什么Swift编译器会发出以下错误?
// Type of expression is ambiguous without more context
let a: Double = .pythagoreanTriple.0
// Type of expression is ambiguous without more co