Прежде всего, пожалуйста, соблюдайте соглашение об именах, согласно которому имена переменных начинаются со строчной буквы, а структуры и классы начинаются с заглавной буквы.
struct Notifications : Decodable {
let count: Int
let results: [Post]
}
struct Post : Decodable {
let id: String
let author: Author?
let anonym: Bool
let subscribed: Bool
let created: String
let active: Bool
let text: String
let image: URL?
let comments: [Comment]
}
struct Comment : Decodable { ...
struct Author : Decodable { ...
...
@IBOutlet weak var recent1: UILabel!
@IBOutlet weak var recent2: UILabel!
@IBOutlet weak var recent3: UILabel!
@IBOutlet weak var recent4: UILabel!
Поместите метки в массив
let labelArray = [recent1, recent2, recent3, recent4]
и в цикле используйте счетчик, чтобы выйти из цикла, если все 4 метки имеют текст (или доступно менее 4 сообщений).
guard let data = data else { return }
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let notifications = try decoder.decode(Notifications.self, from: data)
print(notifications.results)
var counter = 0
for post in notifications.results {
labelArray[counter].text = post.text
if counter == 3 { break }
counter += 1
}
} catch {
print(error)
}
Или еще лучше: используйте newsequentialid()
в качестве значения по умолчанию для столбца UNIQUEIDENITIFER. Это даст вам несколько последовательных серий GUID.
CREATE TABLE dbo.YourTable
(SerialID UNIQUEIDENTIFIER
CONSTRAINT DF_SerialID DEFAULT newsequentialid(),
.... (other columns)......
)
Проблема в том, что newsequentialid доступен только как столбец по умолчанию - вы не можете вызвать его как функцию или что-то еще. Но, похоже, это подходит под ваши требования.
UPDATE: похоже, что в SQL Server Management Studio обнаружена ошибка, которая не позволяет указать newsequentialid()
в качестве значения по умолчанию для столбца в интерактивном конструкторе таблиц.
См: http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/cad8a4d7-714f-44a2-adb0-569655ac66e6
Обходной путь: создайте таблицу без указания значения по умолчанию, а затем введите этот оператор T-SQL в обычном окне запроса и запустите его:
ALTER TABLE dbo.YourTable
ADD CONSTRAINT DF_SerialID DEFAULT newsequentialid() FOR SerialID
Это должно помочь!
Полагаю, вы имеете в виду SQLServer, а не C # ...
Установите для столбца ПЕРВИЧНЫЙ КЛЮЧ и ROWGUID
RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png
Используйте NewID () в качестве значения по умолчанию. По крайней мере, это то, что вы сделали бы для SQL Server.
Я думаю, что
CREATE TABLE dbo.YourTable
(
SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)
проще
.