顯示具有 plist 標籤的文章。 顯示所有文章
顯示具有 plist 標籤的文章。 顯示所有文章

2012年8月10日 星期五

如何載入預設資料,使用 Core Data

Core Data on iOS 5 Tutorial: How To Preload and Import Existing Data

裡面提到兩種方式

  1. 執行App時,從其他資料匯入到資料戶,例如 JSON, XML, PLIST。
  2. 提供已經載入資料的資料庫。

在這裡我個人是採用第二種方式,

原因是,在邊寫程式邊調整資料庫的結構時,

最後也把資料庫弄好,並且整理好了,

所以在 App 第一次啟動時,

在 Core Data 初始化之前,需要先判斷 .sqlite 檔是否已經存在,

(Core Data 是 基於 SQLite 技術的物件式關連資料庫)

不存在,把之前準備好的資料庫檔 .sqlite (放在 App 的資料夾裡,跟 .h .m 放一起)

複製到 App 的 Document 目錄即可。


沒有採用第一種方式的原因是,

需要判斷是否已經載入之外,

還得另外寫匯入程式,

因為懶惰的關係,所以採用第二種方式唷!


2012年5月15日 星期二

CSV 轉換成 plist (Property List) 檔

http://stackoverflow.com/questions/1546007/convert-excel-document-xls-to-a-plist

下載 Plist Converter1.0

或是 使用 cCSVParse 這個 lib

套用底下程式碼


 CSVParser *parser = [CSVParser new];
[parser openFileWithPath:pathAsString];
NSMutableArray *csvContent = [parser parseFile];
[parser closeFile];
if (pathAsString != nil)
{

        NSArray *keyArray = [csvContent objectAtIndex:0];

        NSMutableArray *plistOutputArray = [NSMutableArray array];

        NSInteger i = 0;

        for (NSArray *array in csvContent)
        {



                NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

                NSInteger keyNumber = 0;

                for (NSString *string in array)
                {

                        [dictionary setObject:string forKey:[keyArray objectAtIndex:keyNumber]];

                        keyNumber++;

                }

                if (i > 0)
                {
                        [plistOutputArray addObject:dictionary];
                }

                i++;

        }

        NSMutableString *mutableString = [NSMutableString stringWithString:pathAsString];
        [mutableString replaceOccurrencesOfString:@".csv" withString:@".plist" options:nil range:NSMakeRange([mutableString length]-4, 4)];

        NSURL *url = [NSURL fileURLWithPath:mutableString];


        [plistOutputArray writeToURL:url atomically:YES];