[iOS] 字串去掉前後的空白
寫了四年多的iOS App,還沒有需要字串去掉前後的空白,可是這次卻因為在資料庫發現,居然有email字串中尾端多打了個「空白」,以至於某些功能判定沒有此帳號,而出現非預期的結果。
寫了四年多的iOS App,還沒有需要字串去掉前後的空白,可是這次卻因為在資料庫發現,居然有email字串中尾端多打了個「空白」,以至於某些功能判定沒有此帳號,而出現非預期的結果。
很多時候我們會把資料儲存在User Defaults,也就是本機端,只要App不被刪掉,那麼每次重新開啟App,就能再從User Defaults取得先前所儲存的資料。
有某時候我們需要把User Defaults給清空,比如要給其它帳號使用,此時登出A就要將A所儲存的User Defaults給清除乾淨,而登入B後又是全新沒有受污染的User Defaults。
該怎麼做呢?以下的code就能刪除所有存在User Defaults中的key,不過卻不會刪掉系統預設的key呢!
/** Theme: Delete User Defaults IDE: Xcode 7 Language: Objective C Date: 104/12/07 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ #pragma mark - 刪除 UserDefaults NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; NSDictionary *dict = [defs dictionaryRepresentation]; for (id key in dict) { [defs removeObjectForKey:key]; } [defs synchronize];
清空前的User Defaults之key群:
(
GGUserDefaultsKeyLoginAccount,
AppleKeyboardsExpanded,
GGUserDefaultsKeyLoginPassword,
PCSavePendingUserDefaults,
GGUserDefaultsKeyhasFirstShowMenu,
GGUserDefaultsKeyIsLogin,
INNextHearbeatDate,
com.apple.content-rating.ExplicitBooksAllowed,
GGUserDefaultsKeyLoginPasswordAlternative,
AppleKeyboards,
HasUserRegisteredFonts,
PKEnableStockholmSettings,
GGUserDefaultsKeyRememberPassword,
AppleLanguagesDidMigrate,
com.apple.content-rating.TVShowRating,
com.apple.content-rating.ExplicitMusicPodcastsAllowed,
NSLanguages,
com.apple.content-rating.MovieRating,
GGUserDefaultsKeyQBId,
GGUserDefaultsKeyLoginAccountAlternative,
PreferredLanguages,
AddingEmojiKeybordHandled,
MSVLoggingMasterSwitchEnabledKey,
AppleLocale,
AppleLanguages,
NSInterfaceStyle,
com.apple.content-rating.AppRating,
AppleITunesStoreItemKinds
)
清空後的User Defaults之key群:
(
PKEnableStockholmSettings,
INNextHearbeatDate,
MSVLoggingMasterSwitchEnabledKey,
AppleITunesStoreItemKinds,
AddingEmojiKeybordHandled,
com.apple.content-rating.ExplicitBooksAllowed,
com.apple.content-rating.MovieRating,
HasUserRegisteredFonts,
AppleLanguagesDidMigrate,
com.apple.content-rating.AppRating,
AppleLanguages,
NSLanguages,
NSInterfaceStyle,
com.apple.content-rating.ExplicitMusicPodcastsAllowed,
AppleKeyboardsExpanded,
AppleKeyboards,
PreferredLanguages,
AppleLocale,
com.apple.content-rating.TVShowRating
)
key前綴為PC或GG,就是我在此專案中儲存資料用的key喔~
JSON(JavaScript Object Notation)是一種輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。儘管JSON是Javascript的一個子集,但JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。
原始的JSON檔不易閱讀,就如同下圖我們所看到的樣子,這對開發造成些許阻礙,讓眼睛好容易疲勞呀⋯⋯
最近一個月以來,一直受硬碟空間不足所苦,原因是我的Macbook Air只有128GB,為什麼這麼小?因為我買基本款,想說我不會把太多資料存放在筆電,半年前也買了1TB的隨身硬碟,一且都在計畫之中才是,只是Mac OS開始發揮潛力,原本的好意變成困擾。簡單來說,原本備份這個功能用意良好,但對於本來就有做備份的我來說顯得多餘~
其中我把70GB割給Mac,而50GB分給Windows,已經沒有在Air存放音樂、影片、影像的我,上頭顯示的「其他」不知道為何如此龐大?
寫iOS時常需要讀取檔案,我們不希望把資料key進程式碼,因為會擾亂編程觀感,而且不易修改和維護,於是將CSV轉為Plist會是個好方法! 稍微來瞭解一下CSV和Plist是什麼格式吧~
什麼是plist?全名為property list,在所有的資料儲存方法中,最容易莫過於Property List了,陣列、字典、字串和資料都可以存成XML格式的Property List,事實上,NSUserDefaults就是一個Property List。
不過並非所有的資料都適合用它來儲存,像是過多的資料或是自己設計的一些複雜物件都不太適合,因為Property List會一次將整個文件內容讀取到記憶體中,無論效率上或是空間上都不是很理想。
使用plist存取檔案有什麼特色?
資料型態 | XML 元素 | Foundation framework 類別 |
array | <array> | NSArray |
dictionary | <dict> | NSDictionary |
string | <string> | NSString |
data | <data> | NSData |
date | <date> | NSDate |
number – integer | <integer> | NSNumber(intValue) |
number – floating point | <real> | NSNumber(intFloat) |
Boolean | <true/>或<false/> | NSNumber(boolValue) |
HappyMan・迴響