मेरे पास निम्नलिखित नेस्टेड एन्यूमरेशन सेटअप है:

enum UserSettings:Equatable {
    case emailSettings(EmailSettings), notificationSettings(NotificationSettings), socialSettings(SocialSettings), gameSettings(GameSettings)

    enum EmailSettings:CaseIterable {
        case enableEmails, allowPromotionalEmails
    }

    enum NotificationSettings:CaseIterable {
        case enableAppNotifications, getNewFollowerNotifications, getTaggedInPostNotifications
    }

    enum SocialSettings:CaseIterable {
        case allowChallengeInvites, allowCrewRequests, allowLeagueInvites, allowPostTagging, allowUsersToFollow, appearOffline, crewOnlyMessaging, matchesArePublic, profileIsPublic
    }

    enum GameSettings:CaseIterable {
        case syncNewMatchesOnStartup
    }
}

मैं निम्नलिखित कोड के माध्यम से cellForRowAt में एक सेल में "उपयोगकर्ता सेटिंग्स" मान पास करने का प्रयास कर रहा हूं:

let cell = settingsTableView.dequeueReusableCell(withIdentifier: "yesNoSettingsCell", for: indexPath) as! YesNoSettingsCell
let currentSetting = UserSettings.SocialSettings.allCases[indexPath.row]
cell.passedUserSetting = currentSetting
return cell

उपरोक्त कोड निम्न त्रुटि उत्पन्न करता है:

"Cannot assign value of type 'UserSettings.SocialSettings' to type 'UserSettings'"

कोड को cellForRowAt में बदलना:

let currentSetting = UserSettings.socialSettings().allCases[indexPath.row]

निम्न त्रुटि उत्पन्न करता है:

"Missing argument for parameter #1 in call"

मुझे किसकी याद आ रही है? मैं नेस्टेड गणना के सभी मामलों के माध्यम से कैसे गणना करूं?

0
Alex Ritter 16 फरवरी 2021, 00:48
let currentSetting = UserSettings.SocialSettings.allCases[indexPath.row]; cell.passedUserSetting = .socialSettings(currentSetting) ?
 – 
Larme
16 फरवरी 2021, 00:52
cell.passedUserSetting = UserSettings.socialSettings(currentSetting) तो? ध्यान दें कि पिछला स्थान .socialSettings (currentSetting) => .socialSettings(currentSetting) नहीं होना चाहिए, लेकिन मुझे लगता है कि आपने उस टाइपो को ठीक कर दिया है
 – 
Larme
16 फरवरी 2021, 00:55
यह किया! धन्यवाद! सुनिश्चित करें कि आप एक उत्तर जोड़ते हैं ताकि मैं इसे स्वीकार कर सकूं।
 – 
Alex Ritter
16 फरवरी 2021, 00:57

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि "Cannot assign value of type 'UserSettings.SocialSettings' to type 'UserSettings'", cell.passedUserSetting = currentSetting पर है। आप संदर्भ दे रहे हैं, लेकिन passedUserSetting एक UserSettings है।

लेकिन जब आप करते हैं:

let currentSetting = UserSettings.SocialSettings.allCases[indexPath.row]

तो, इसका मतलब है कि currentSetting एक UserSettings.SocialSettings है।

तो आप टाइप बी के मान को टाइप ए के अपेक्षित मान पर सेट करने का प्रयास कर रहे हैं। यह काम नहीं करेगा।

आप अपने साथ एक UserSettings को UserSettings.SocialSettings के साथ जोड़ सकते हैं:

cell.passedUserSetting = .socialSettings(currentSetting)
2
Larme 16 फरवरी 2021, 01:00