Автоинкремент uniqueidentifier

Прежде всего, пожалуйста, соблюдайте соглашение об именах, согласно которому имена переменных начинаются со строчной буквы, а структуры и классы начинаются с заглавной буквы.

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)
}
24
задан svick 2 March 2013 в 10:11
поделиться

4 ответа

Или еще лучше: используйте 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

Это должно помочь!

30
ответ дан 28 November 2019 в 23:34
поделиться

Полагаю, вы имеете в виду SQLServer, а не C # ...

Установите для столбца ПЕРВИЧНЫЙ КЛЮЧ и ROWGUID

RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png

6
ответ дан 28 November 2019 в 23:34
поделиться

Используйте NewID () в качестве значения по умолчанию. По крайней мере, это то, что вы сделали бы для SQL Server.

3
ответ дан 28 November 2019 в 23:34
поделиться

Я думаю, что

CREATE TABLE dbo.YourTable
(
    SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)

проще

.
3
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: