Я пытаюсь написать код Swift, который хранит коллекцию коллекций в словаре (поэтому его можно легко сериализовать как plist). Достаточно просто в Objective-C, но я вижу некоторое поведение в Swift, которого я не понимаю.Хранение ссылок в словарях Swift
Playgroundable пример:
import Cocoa
typealias StringMap=Dictionary<String, String>
var collections = Dictionary<String, Array<StringMap>>();
// Add an empty "books" collection
collections["books"] = Array<StringMap>();
// Look up the books collection
var books = collections["books"] as Array<StringMap>!;
// Add an item to it
var book = ["name": "The Complete Peanuts", "author": "Charles M. Schulz"]
books.append(book);
// This is now 1
books.count
// Look up the books collection again
books = collections["books"] as Array<StringMap>!;
// This is zero
books.count
Похоже, извлекая массив книг из словаря получает копию массива, а не ссылка на него. Я хочу ссылку, чтобы обновить ее.
На самом деле то, что вы делаете в последнем 'book = coll ...', - это присвоить ему новый экземпляр, который, конечно, пуст. –