[爆卦]NSString是什麼?優點缺點精華區懶人包

雖然這篇NSString鄉民發文沒有被收入到精華區:在NSString這個話題中,我們另外找到其它相關的精選爆讚文章

在 nsstring產品中有3篇Facebook貼文,粉絲數超過2萬的網紅紀老師程式教學網,也在其Facebook貼文中提到, [iOS 6.0 新功能] Attributed String 這是我最近製作新版 iOS 6.0 程式設計講義時發現的。以前的字串(不管是 NSString 或 NSMutableString)都無法設定「被景色」、「前景色」、「加粗、斜體、底線」、「陰影」。更別說一個字串內,前面三個字與後面兩...

 同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...

  • nsstring 在 紀老師程式教學網 Facebook 的最讚貼文

    2012-11-30 01:10:01
    有 9 人按讚

    [iOS 6.0 新功能] Attributed String

    這是我最近製作新版 iOS 6.0 程式設計講義時發現的。以前的字串(不管是 NSString 或 NSMutableString)都無法設定「被景色」、「前景色」、「加粗、斜體、底線」、「陰影」。更別說一個字串內,前面三個字與後面兩個字分別使用不同的「顏色、字體、陰影」了。

    但這些在 iOS 6 內都變成可能!iOS 6 引入新的「Attributed String」,可以針對字串全體、或是局部,進行不同的字體與顏色變換。詳細方法可以參考隨附連結。如同各位所知,「字串」(NSString、NSMutableString)備用在很多 iOS 的視覺元件。如:UILabel、UITextField...到處都有字串的影子。也就是說,現在暗藏在這些視覺元件內的字串,也能套用「Attributed String」特性,讓視覺元件內的一個字串,呈現不同風貌。

    有需要的朋友,請點選下列連結觀看:

    http://ioscreator.com/format-text-in-ios6-attributed-strings/

  • nsstring 在 紀老師程式教學網 Facebook 的最佳貼文

    2012-05-22 10:31:50
    有 11 人按讚

    [iOS Programming] 什麼是 Key-Value Coding?

    剛剛收到班上同學的來信,說他在網路上看到一個名詞,叫 Key-Value Coding。問我什麼是 Key-Value Coding。由於這個主題比較冷僻,用到的機會也不能算多。在只有 48 小時得把所有 iOS SDK 教完的壓力下,這個主題被我捨棄了。沒想到同學們還是很用功啊!看來我不講是不行的了(所以說,出來混,一定要還的...)。

    先做個定義吧:「Key-Value Coding 就是一種可以用『字串』,來存取物件內某個『屬性欄位』的技巧」。

    假設你有一個類別叫做「People」,裡面有兩個屬性欄位「name」與「addr」定義如下:

    @interface People : NSObject

    {
    NSString *name;
    NSString *addr;
    }
    @property NSString *name;
    @property NSString *addr;

    @end

    然後你用 People 宣告了一個名為 robert 的物件,並指定初值給它。如下所示:
    People *robert = [[People alloc] init];
    robert.name = @"Robert";
    robert.addr = @"台北市忠孝東路 1 號";

    若你要存取「name」與「addr」屬性,你得這麼寫:
    NSLog(@"%@", robert.name); // 印出 robert 物件 name 屬性內容 --> "Robert"
    NSLog(@"%@", robert.addr); // 印出 robert 物件 addr 屬性內容 --> "台北市忠孝東路..."

    使用 Key-Value Coding,你可以這麼存取屬性值:
    NSLog(@"%@", [robert valueForKey:@"name"]); // 存取到 robert 內的 name 欄位。

    你有沒有注意到,欄位名稱「name」被字串化了!也就是說,只要你把 "name" 改為 "addr",抓到的欄位值就是 robert.addr 的了。

    這有什麼好處呢?舉例來說,你製作了一個資料庫 App,有個下拉式清單,列出所有可以讓使用者選擇的欄位名稱。如「姓名」、「住址」...。使用者只要選擇了一個欄位,如:住址,就可以印出當前物件內,住址那一欄。如果你先把「姓名」與對應的欄位名稱「name」、以及「住址」與對應的欄位名稱「addr」…以「鍵值對(Key-Value Pair)」的方式存放好:

    Key Value
    ------------
    姓名 name
    住址 addr
    ...

    在 Objective-C 內,鍵值對是用 NSDictionary 類別存放的:
    NSArray *keys = [[NSArray alloc] initWithObjects: @"姓名", @"住址", …nil];
    NSArray *values = [[NSArray alloc] initWithObjects: @"name", @"addr", … nil];
    NSDictionary *dic = [[NSDictionary alloc] initWithObjecs:values forKeys:keys];

    則 Key 可以拿去當下拉式功能表要顯示的內容。當使用者選擇了其中一項,如:「姓名」,我就可以拿回到「鍵值對」的物件,查到它對應的值是「"name"」。接著,我就可以用所謂的「Key-Value Coding」這招,抓出當前物件姓名欄位的值:
    NSLog(@"%@", [robert valueForKey: theValue]); // theValue 代表由「鍵值對」中查到的值「"name"」。

    若使用者選擇的是「住址」,則 theValue 會被填入「"addr"」,上述程式碼不用改一個字,照常抓出 robert 物件內住址欄位的值。

    您看出「Key-Value Coding」的價值了嗎?萬一 People 類別內有上百個欄位,我要印出特定欄位的值,都是用下列這一道就解決了:
    NSLog(@"%@", [robert valueForKey:@"name"]);

    不用 Key-Value Coding、把物件的屬性欄位「字串化」的話,想存取特定欄位,你一定得寫一堆 if ~ else:
    if (選中的欄位 == 「姓名」)
    fieldToBePrinted = robert.name;
    else if (選中的欄位 == 「住址」)
    fieldToBePrinted = robert.addr;
    else


    這樣,大家知道 Objective-C 內的 Key-Value Coding 是什麼意思了嗎?

  • nsstring 在 紀老師程式教學網 Facebook 的精選貼文

    2012-05-22 02:35:26
    有 7 人按讚

    [iOS Programming] 如何把 iPhone 內的 SQLite 資料庫匯出?

    今早正在如火如荼地陷入「講義製作地獄」時(笑),網友梅干兄用 MSN 敲了我一下。原來他新製作的 iOS App 上架了: http://www.minwt.com/myapp/5013.html (可喜可賀!可喜可賀!)

    後來梅干兄問道:「如何把 SQLite 的資料庫匯出?」我稍微楞了一下,從我殘破不堪的大腦,嘗試匯出「如何把 SQLite 匯出」的條目...還好還有點印象。除了回覆梅干兄之外,也提供給朋友們參考:

    (1) 自己寫程式將 SQLite 需要的資料撈出,存入一個檔案中(通常為 .CSV 格式),然後將設備接上 iTune,從 iTune 裡把該檔案抓出來。這是最笨的方法,但...也是我最常用的方法...(羞)。參考程式碼如下:

    FMDatabase *db = [[FMDatabase alloc] initWithPath:@"/path/to/db/file"];
    if (![db open]) {
    //couldn't open the database
    [db release];
    return nil;
    }
    FMResultSet *results = [db executeQuery:@"SELECT * FROM tableName"];
    CHCSVWriter *csvWriter = [[CHCSVWriter alloc] initWithCSVFile:@"/path/to/csv/file" atomic:NO];
    while([results nextRow]) {
    NSDictionary *resultRow = [results resultDict];
    NSArray *orderedKeys = [[resultRow allKeys] sortedArrayUsingSelector:@selector(compare:)];
    //iterate over the dictionary
    for (NSString *columnName in orderedKeys) {
    id value = [resultRow objectForKey:columnName];
    [csvWriter writeField:value];
    }
    [csvWriter writeLine];
    }
    [csvWriter closeFile];
    [csvWriter release];

    [db close];
    [db release];


    (2) 用 SyncDocs 這套軟體。
    SQLite 資料庫基本上也是一個檔案。所以也可以把整個 SQLite 的檔案,從 iPhone 裡撈出來。網友推薦一套 SyncDocs 可以做到這件事。請參考下面連結:
    > SyncDocs 使用方法討論: http://www.iphonedevsdk.com/forum/iphone-sdk-development/4630-best-way-export-data-sqlite3-database.html
    > SyncDocs 首頁: http://syncdocs.sourceforge.net/


    (3) 用 iExplorer 這套軟體。
    這套軟體可以安裝在你的筆電,接上 iPhone 後,去探索整個 iOS 系統,就像檔案總管可以探索整部 Windows 系統是一樣的。當然 SQLite 資料庫也可以透過這套軟體「看見」,您就可以將之「匯入」。該軟體的首頁為:
    http://www.macroplant.com/iexplorer/

    希望這些資訊對大家有點幫助。

  • nsstring 在 コバにゃんチャンネル Youtube 的精選貼文

    2021-10-01 05:19:08

  • nsstring 在 大象中醫 Youtube 的最佳解答

    2021-10-01 05:10:45

  • nsstring 在 大象中醫 Youtube 的最讚貼文

    2021-10-01 05:09:56

你可能也想看看

搜尋相關網站