Ключевое слово else
может сбивать с толку, и, как отмечают многие, что-то вроде nobreak
, notbreak
более уместно.
Чтобы логически понять for ... else ...
, сравните его с try...except...else
, а не if...else...
, большинство программистов на python знакомы со следующим кодом:
try:
do_something()
except:
print("Error happened.") # The try block threw an exception
else:
print("Everything is find.") # The try block does things just find.
Аналогично, подумайте о break
] как особый вид Exception
:
for x in iterable:
do_something(x)
except break:
pass # Implied by Python's loop semantics
else:
print('no break encountered') # No break statement was encountered
Разница в python
подразумевает except break
и вы не можете выписать его, поэтому он становится:
for x in iterable:
do_something(x)
else:
print('no break encountered') # No break statement was encountered
Да, я знаю, что это сравнение может быть трудным и утомительным, но оно проясняет путаницу.
Чтобы ответить на мой вопрос:
Вы должны использовать свойство items, чтобы поместить несколько представлений на монтажный стол. Для этого вы создаете словарь с каждым представлением в качестве значения и типом представления в качестве ключа. Добавьте этот словарь в массив, где каждый элемент в массиве представляет собой элемент (UIPasteboard поддерживает добавление нескольких элементов на монтажный стол, а также добавление нескольких представлений к каждому элементу).
Пример кода для одного элемента с двумя представлениями:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSMutableDictionary *item = [NSMutableDictionary dictionaryWithCapacity:2];
[item setValue:[NSKeyedArchiver archivedDataWithRootObject:pasteboardDictionary] forKey:MNTNodesPasteboardType];
[item setValue:pasteboardString forKey:(NSString *)kUTTypeUTF8PlainText];
pasteboard.items = [NSArray arrayWithObject:item];
Не забудьте установить связь с платформой MobileCoreServices для разрешения константы UTI.