why is this if let code in Swift Xcode 10.1 throwing a Thread 1: signal SIGABART
up vote
1
down vote
favorite
This code in Swift Xcode 10.1 keeps throwing a Thread 1: signal SIGABART error and I don't know why.
let item = UserDefaults.standard.object(forKey: "To Does")
var arrayItem:[String]
print("about to check")
if let arrayItem2 = item as! [String]?{
arrayItem = arrayItem2
arrayItem.append(textInput.text!)
UserDefaults.standard.set(arrayItem, forKey: "To Does")
print(arrayItem)
}else{
UserDefaults.standard.set(textInput.text!, forKey: "To Does")
}
textInput.text = ""
swift
add a comment |
up vote
1
down vote
favorite
This code in Swift Xcode 10.1 keeps throwing a Thread 1: signal SIGABART error and I don't know why.
let item = UserDefaults.standard.object(forKey: "To Does")
var arrayItem:[String]
print("about to check")
if let arrayItem2 = item as! [String]?{
arrayItem = arrayItem2
arrayItem.append(textInput.text!)
UserDefaults.standard.set(arrayItem, forKey: "To Does")
print(arrayItem)
}else{
UserDefaults.standard.set(textInput.text!, forKey: "To Does")
}
textInput.text = ""
swift
3
Why use force cast when you are already usingif let
anyway?
– Ricky Mo
Nov 22 at 4:34
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
This code in Swift Xcode 10.1 keeps throwing a Thread 1: signal SIGABART error and I don't know why.
let item = UserDefaults.standard.object(forKey: "To Does")
var arrayItem:[String]
print("about to check")
if let arrayItem2 = item as! [String]?{
arrayItem = arrayItem2
arrayItem.append(textInput.text!)
UserDefaults.standard.set(arrayItem, forKey: "To Does")
print(arrayItem)
}else{
UserDefaults.standard.set(textInput.text!, forKey: "To Does")
}
textInput.text = ""
swift
This code in Swift Xcode 10.1 keeps throwing a Thread 1: signal SIGABART error and I don't know why.
let item = UserDefaults.standard.object(forKey: "To Does")
var arrayItem:[String]
print("about to check")
if let arrayItem2 = item as! [String]?{
arrayItem = arrayItem2
arrayItem.append(textInput.text!)
UserDefaults.standard.set(arrayItem, forKey: "To Does")
print(arrayItem)
}else{
UserDefaults.standard.set(textInput.text!, forKey: "To Does")
}
textInput.text = ""
swift
swift
asked Nov 22 at 4:17
Jensen Coonradt
112
112
3
Why use force cast when you are already usingif let
anyway?
– Ricky Mo
Nov 22 at 4:34
add a comment |
3
Why use force cast when you are already usingif let
anyway?
– Ricky Mo
Nov 22 at 4:34
3
3
Why use force cast when you are already using
if let
anyway?– Ricky Mo
Nov 22 at 4:34
Why use force cast when you are already using
if let
anyway?– Ricky Mo
Nov 22 at 4:34
add a comment |
2 Answers
2
active
oldest
votes
up vote
2
down vote
accepted
Never use a forced cast with if let
. Never force cast to an optional. Neither make any sense.
Even once you fix that you have a problem. You first write a string to user defaults if there is nothing yet for the key. But then you try to read an array. That will never work.
Simplify your code and always write an read an array.
var items = UserDefaults.standard.array(forKey: "To Does") as? [String] ??
items.append(textInput.text!)
UserDefaults.standard.set(items, forKey: "To Does")
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
add a comment |
up vote
0
down vote
Try printing an item
to console. Chances are it's neither nil
, nor an [String]
and it fails a forced cast.
If it's not - you can use a simpler cast. Try this in playground:
let item: Any? = 2
var arrayItem: [String] =
print("about to check")
if let arrayItem2 = item as? [String] {
arrayItem = arrayItem2
arrayItem.append("foo")
print(arrayItem)
} else {
print("doing nothing")
}
Outputs:
about to check
doing nothing
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Never use a forced cast with if let
. Never force cast to an optional. Neither make any sense.
Even once you fix that you have a problem. You first write a string to user defaults if there is nothing yet for the key. But then you try to read an array. That will never work.
Simplify your code and always write an read an array.
var items = UserDefaults.standard.array(forKey: "To Does") as? [String] ??
items.append(textInput.text!)
UserDefaults.standard.set(items, forKey: "To Does")
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
add a comment |
up vote
2
down vote
accepted
Never use a forced cast with if let
. Never force cast to an optional. Neither make any sense.
Even once you fix that you have a problem. You first write a string to user defaults if there is nothing yet for the key. But then you try to read an array. That will never work.
Simplify your code and always write an read an array.
var items = UserDefaults.standard.array(forKey: "To Does") as? [String] ??
items.append(textInput.text!)
UserDefaults.standard.set(items, forKey: "To Does")
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Never use a forced cast with if let
. Never force cast to an optional. Neither make any sense.
Even once you fix that you have a problem. You first write a string to user defaults if there is nothing yet for the key. But then you try to read an array. That will never work.
Simplify your code and always write an read an array.
var items = UserDefaults.standard.array(forKey: "To Does") as? [String] ??
items.append(textInput.text!)
UserDefaults.standard.set(items, forKey: "To Does")
Never use a forced cast with if let
. Never force cast to an optional. Neither make any sense.
Even once you fix that you have a problem. You first write a string to user defaults if there is nothing yet for the key. But then you try to read an array. That will never work.
Simplify your code and always write an read an array.
var items = UserDefaults.standard.array(forKey: "To Does") as? [String] ??
items.append(textInput.text!)
UserDefaults.standard.set(items, forKey: "To Does")
answered Nov 22 at 4:35
rmaddy
236k27307374
236k27307374
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
add a comment |
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
Thank you so much!
– Jensen Coonradt
Nov 22 at 18:34
add a comment |
up vote
0
down vote
Try printing an item
to console. Chances are it's neither nil
, nor an [String]
and it fails a forced cast.
If it's not - you can use a simpler cast. Try this in playground:
let item: Any? = 2
var arrayItem: [String] =
print("about to check")
if let arrayItem2 = item as? [String] {
arrayItem = arrayItem2
arrayItem.append("foo")
print(arrayItem)
} else {
print("doing nothing")
}
Outputs:
about to check
doing nothing
add a comment |
up vote
0
down vote
Try printing an item
to console. Chances are it's neither nil
, nor an [String]
and it fails a forced cast.
If it's not - you can use a simpler cast. Try this in playground:
let item: Any? = 2
var arrayItem: [String] =
print("about to check")
if let arrayItem2 = item as? [String] {
arrayItem = arrayItem2
arrayItem.append("foo")
print(arrayItem)
} else {
print("doing nothing")
}
Outputs:
about to check
doing nothing
add a comment |
up vote
0
down vote
up vote
0
down vote
Try printing an item
to console. Chances are it's neither nil
, nor an [String]
and it fails a forced cast.
If it's not - you can use a simpler cast. Try this in playground:
let item: Any? = 2
var arrayItem: [String] =
print("about to check")
if let arrayItem2 = item as? [String] {
arrayItem = arrayItem2
arrayItem.append("foo")
print(arrayItem)
} else {
print("doing nothing")
}
Outputs:
about to check
doing nothing
Try printing an item
to console. Chances are it's neither nil
, nor an [String]
and it fails a forced cast.
If it's not - you can use a simpler cast. Try this in playground:
let item: Any? = 2
var arrayItem: [String] =
print("about to check")
if let arrayItem2 = item as? [String] {
arrayItem = arrayItem2
arrayItem.append("foo")
print(arrayItem)
} else {
print("doing nothing")
}
Outputs:
about to check
doing nothing
edited Nov 22 at 4:30
answered Nov 22 at 4:24
Eimantas
42.6k14114152
42.6k14114152
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423831%2fwhy-is-this-if-let-code-in-swift-xcode-10-1-throwing-a-thread-1-signal-sigabart%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
Why use force cast when you are already using
if let
anyway?– Ricky Mo
Nov 22 at 4:34