في الواقع، المشكلة في الشيفت التي قمت بعملها في الشرط الأخير (else
) بعد استخدام سلسلة من الشروط (if
)، حيث أن الشرط الأخير ليس مرتبطاً بالشروط السابقة. بمعنى آخر، حتى لو كانت finalName
تساوي “Berlin, DE”، سيتم تنفيذ الشرط else
دائماً. السبب في ذلك هو أنه بعد كل شرط if
، تأتي فقرة else
مستقلة، وهذا يعني أنها ستنفذ بغض النظر عن نتيجة الشروط السابقة.
لحل هذه المشكلة، يمكنك استخدام الشروط else if
بدلاً من if
بعد الشروط الأولية، مما يربط الشروط مع بعضها البعض ويجعلها تنفذ بشكل منطقي وفقاً لقيمة finalName
. يمكنك تعديل الشيفت الخاص بك إلى الشكل التالي:
swiftif finalName == "London, GB" {
let londonImage = UIImage(named: "united-kingdom-1043062.jpg")
imageViewPage1.image = londonImage
}
else if finalName == "Novaya Gollandiya, RU" {
let StPetersbourgImage = UIImage(named: "architecture-995613_1920.jpg")
imageViewPage1.image = StPetersbourgImage
}
else if finalName == "Berlin, DE" {
let BerlinImage = UIImage(named: "siegessaule-200714_1920.jpg")
imageViewPage1.image = BerlinImage
}
else if finalName == "Tel Aviv, IL" {
let TelAvivImage = UIImage(named: "buildings-89111.jpg")
imageViewPage1.image = TelAvivImage
}
else {
let elseImage = UIImage(named: "sun-203792.jpg")
imageViewPage1.image = elseImage
}
بهذه الطريقة، سيتم تنفيذ الشرط الذي يطابق قيمة finalName
وستتجنب الوصول إلى الفقرة else
بشكل غير متوقع.
المزيد من المعلومات
بالطبع! في الشيفت الخاص بك، تستخدم مجموعة من الشروط (if
) لفحص قيمة finalName
وتعيين صورة معينة لـ imageViewPage1
بناءً على قيمة finalName
. ومن الواضح أنك تواجه مشكلة في التحقق من الشروط بشكل صحيح.
السطور الأولى من الشيفت الخاص بك يعتبرون شروطًا مستقلة عن بعضهم البعض، وهذا يعني أنه إذا تحقق أي شرط، فإن الشرط الأخير (الفقرة else
) سيتم تنفيذه بغض النظر عن الشروط السابقة. هذا هو السبب في عدم تنفيذ الشروط بالطريقة التي تتوقعها.
باستخدام else if
بدلاً من if
بعد كل شرط، سيتم تنفيذ شرط واحد فقط (الذي يتطابق مع قيمة finalName
)، وسيتم تجاهل الشروط الأخرى. هذا سيحل المشكلة التي تواجهها وستتمكن من تحديد الصورة بشكل صحيح بناءً على قيمة finalName
.