Ich studiere Swift. Ich möchte den Beitrag mit UITableViewCellEditingStyle
entfernen, aber es funktioniert nicht. Es zeigt:Wie man Swift 3 Fehler beheben kann 'kann nicht mutieren Mitglied auf unveränderlichen Wert:' loadedPost 'nur Eigentum erhalten'?
kann Mitglied nicht auf unveränderlichen Wert verwenden mutiert: ‚loadedPost‘
in der Linie nur Eigentum:
Dataservice.instance.loadedPosts.removeAtIndex(indexPath.row)
Wie behebe ich die Syntax? Diese
zuerst Viewcontroller:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
DataService.instance.loadedPosts.removeAtIndex(indexPath.row) //‘cannot use mutating member on immutable value: ‘loadedPost’ get only property’
self.onPostsLoaded()
}
}
Dies ist Array in einer anderen Datei:
class DataService {
static var instance = DataService()
private var _loadedPosts = [Post]()
var loadedPosts: [Post] {
return _loadedPosts
}
func savePosts() {
let postsData = NSKeyedArchiver.archivedData(withRootObject: _loadedPosts)
UserDefaults.standard.set(postsData, forKey: "posts")
}
func loadPosts() {
if let postsData = UserDefaults.standard.object(forKey: "posts") as? Data {
if let postsArray = NSKeyedUnarchiver.unarchiveObject(with: postsData) as? [Post] {
_loadedPosts = postsArray
}
}
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "postsLoaded"), object: nil))
}
func addPosts(post: Post) {
_loadedPosts.append(post)
savePosts()
loadPosts()
}
'loadedPosts' schreibgeschützt ist Eigentum von Ihrer Definition, die' _loadedPosts' wird Lese-Schreib-Eigenschaft, auch, indem Sie Ihre Definition. – holex