2013-02-11 6 views
2

SQLite는 테이블은 다음과 같이 선언 :MonoTouch 용 Vici CoolStorage에서 UniqueIdentifier 키를 지원합니까?

CREATE TABLE Note(Id UNIQUEIDENTIFIER, Title TEXT) 

제대로 Windows에서 VICI CoolStorage 읽을하지만, MonoTouch에, 다음과 같은 예외가 발생합니다 :

[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Cannot cast from source type to destination type. at Vici.CoolStorage.CSDataProviderSQLite.GetSchemaColumns (System.String tableName) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.CreateColumns() [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema..ctor (System.Type objType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.Get (System.Type objectType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSList``1[Store.CoolStorage.Note]..ctor() [0x00000] in <filename unknown>:0

그것은 코드처럼 보이는 유형 ID를 기반으로하는 열의 데이터 유형을 감지합니다. MonoTouch 용 Vici의 CSDataProviderSqlite에서 UNIQUEIDENTIFIER 유형을 처리하지 않습니다.

보낸 사람 CSSqliteConnection.GetSch 에마 :

switch (dbType) 
{ 
    case "TEXT": dataType = typeof(string); break; 
    case "VARCHAR": dataType = typeof(string); break; 
    case "INTEGER": dataType = typeof(int); break; 
    case "BOOL": dataType = typeof(bool); break; 
    case "DOUBLE": dataType = typeof(double); break; 
    case "FLOAT": dataType = typeof(double); break; 
    case "REAL": dataType = typeof(double); break; 
    case "CHAR": dataType = typeof(string); break; 
    case "BLOB": dataType = typeof(byte[]); break; 
    case "NUMERIC": dataType = typeof(decimal); break; 
    case "DATETIME": dataType = typeof(DateTime); break; 
} 

UNIQUEIDTITIER에 대한 처리기가 없습니다. Vici CoolStorage의 버그입니까? 더 그 이상이 필요한 경우

switch (dbType) 
{ 
    case "TEXT": dataType = typeof(string); break; 
    case "VARCHAR": dataType = typeof(string); break; 
    case "INTEGER": dataType = typeof(int); break; 
    case "BOOL": dataType = typeof(bool); break; 
    case "DOUBLE": dataType = typeof(double); break; 
    case "FLOAT": dataType = typeof(double); break; 
    case "REAL": dataType = typeof(double); break; 
    case "CHAR": dataType = typeof(string); break; 
    case "BLOB": dataType = typeof(byte[]); break; 
    case "NUMERIC": dataType = typeof(decimal); break; 
    case "DATETIME": dataType = typeof(DateTime); break; 
    case "UNIQUEIDENTIFIER": dataType = typeof(Guid); break; 
} 

, 당신이 시도해야합니다 : 소스 코드에 액세스 할 수있는 것 같습니다 이후

+0

버그가 아니지만 명시 적으로 지원되지 않습니다. –

+0

@Philippe, MonoTouch에서이 예외에 대한 해결 방법이 있습니까? 감사. – bright

답변

3

난 그냥, VICI을 수정합니다. 시도가없는 한. 근원을 사용하십시오, 루크.

+0

네, 그게 제가 이미 한 일입니다. 그렇지만이 일이 옳은지 확인해 주신 Yoda에게 감사드립니다. – bright