青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

2013年3月13日

     摘要: 原文:http://www.cnblogs.com/pifoo/archive/2011/05/28/webkit-webapp.htmlwebkit webApp 開發(fā)技術(shù)要點總結(jié)如果你是一名前端er,又想在移動設備上開發(fā)出自己的應用,那怎么實現(xiàn)呢?幸好,webkit內(nèi)核的瀏覽器能幫助我們完成這一切。接觸 webkit webApp的開發(fā)已經(jīng)有一段時間了,現(xiàn)把一些技巧分享給大家 :1. view...  閱讀全文

posted @ 2013-03-13 17:12 RTY 閱讀(2209) | 評論 (0)編輯 收藏

2013年3月8日

Java Gossip: 國際化訊息

國際化的英文是Internationalization,因為單字中總共有18個字母,簡稱I18N,目的是讓應用程式可以應地區(qū)不同而顯示不同的訊息,最基本的就是讓不同語系的使用者可以看到屬於自己語系的訊息,像是英文語系的看到英文內(nèi)容,而中文語系的可以看到中文的內(nèi)容。

為了在應用程式中表示一個區(qū)域,Java提供有java.util.Locale類,一個Locale實例包括了語系資訊與區(qū)域資訊,例如說"en"表示英文語系的國家,這個字母組合是在 
ISO 639 中定義的,而區(qū)域資訊則是像"US"表示美國,這個字母組合則是在 ISO 3166 中定義的。

您可以這麼新增一個Locale的實例:
Locale locale = new Locale("zh", "TW");
 
如何將Locale用於訊息綁定呢?當您使用ResourceBundle.getBundle()方法時,預設就會自動取得電腦上的語系與區(qū)域訊息,而事實上訊息檔案的名稱由basename加上語系與地區(qū)來組成,例如:
  • basename.properties
  • basename_en.properties
  • basename_zh_TW.properties

沒有指定語言與地區(qū)的basename是預設的資源檔名稱,當沒有提供專用的語系、區(qū)域訊息檔案時,就會找尋預設的資源檔案。

如果您想要提供繁體中文的訊息,由於訊息資源檔必須是ISO-8859-1編碼,所以對於非西方語系的處理,必須先將之轉(zhuǎn)換為Java Unicode Escape格式,例如您可以先在訊息資源檔中寫下以下的內(nèi)容:
  • messages_zh_TW.txt
onlyfun.caterpillar.welcome=哈囉
onlyfun.caterpillar.name=世界

然後使用JDK的工具程式native2ascii來轉(zhuǎn)換,例如:
native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties

轉(zhuǎn)換後的內(nèi)容會如下:

  • messages_zh_TW.properties
onlyfun.caterpillar.welcome=\u54c8\u56c9
onlyfun.caterpillar.name=\u4e16\u754c

將這個檔案放於classpath可以存取的到的位置,您也可以提供預設的訊息檔案:
  • messages.properties
onlyfun.caterpillar.welcome=Hello
onlyfun.caterpillar.name=World

來測試一下訊息檔案,我所使用的作業(yè)系統(tǒng)是語系設定是中文,區(qū)域設定是臺灣,當我使用下面的程式時:
  • ResourceBundleDemo.java
package onlyfun.caterpillar;
 
import java.util.ResourceBundle;

public class ResourceBundleDemo {
public static void main(String[] args) {
ResourceBundle resource =
ResourceBundle.getBundle("messages");

System.out.print(resource.getString(
"onlyfun.caterpillar.welcome") + "!");
System.out.println(resource.getString(
"onlyfun.caterpillar.name") + "!");
}
}

會使用預設的語系"zh"與區(qū)域設定"TW",所以就會找尋messages_zh_TW.properties的內(nèi)容,所以會顯示以下的訊息:
哈囉!世界!

在使用ResourceBundle.getBundle()時可以給定Locale實例作為參數(shù),例如若您想提供 messages_en_US.properties,並想要ResourceBundle.getBundle()取得這個檔案的內(nèi)容,則可以如下撰寫:
Locale locale = new Locale("en", "US");
ResourceBundle resource = 
            ResourceBundle.getBundle("messages", locale);
 
則取得的訊息會是messages_en_US.properties的內(nèi)容。

posted @ 2013-03-08 11:03 RTY 閱讀(539) | 評論 (0)編輯 收藏

2013年2月17日

根據(jù)我的環(huán)境說明一下:
1、Cordova的目錄:/Users/kevin/Projects/HTML5/cordova-2.4.0/cordova-android

2、AndroidSDK目錄: /Users/kevin/TBB/adt-bundle-mac-x86_64/sdk

3、設置方法:
(1)Terminal: 定位到Cordova的目錄。
       cd /Users/kevin/Projects/HTML5/cordova-2.4.0/cordova-android
 (2)設置環(huán)境變量
       export PATH=/Users/kevin/TBB/adt-bundle-mac-x86_64/sdk:/Users/kevin/TBB/adt-bundle-mac-x86_64/sdk/tools/:$PATH

 (3)執(zhí)行 ./bin/create ~/Desktop/myapp com.myapp.special MyApp

特殊說明:
./bin/create /Users/kevin/CordovaProjects/Android/ChunMiaoPu com_chunmiaopu_android chunMiaoPuAndroid

會出現(xiàn)錯誤:
An unexpected error occurred: "$ANDROID_BIN" create project --target $TARGET --path "$PROJECT_PATH" --package $PACKAGE --activity $ACTIVITY >&/dev/null exited with 1
Deleting project...


只有執(zhí)行如下才可以:./bin/create ~/CordovaProjects/Android/ChunMiaoPu com.chunmiaopu.android chunMiaoPuAndroid


~/MyWorkSpace/JiffAndroidApp 會自動創(chuàng)建JiffAndroidApp目錄

devmatoMacBook-2:cordova-android kevin$ ./bin/create ~/MyWorkSpace/JiffAndroidApp me.jiff.AndroidApp JiffAndroidApp
An unexpected error occurred: ANDROID_BIN="${ANDROID_BIN:=$( which android )}" exited with 1
Deleting project...
devmatoMacBook-2:cordova-android kevin$ export PATH=/Applications/eclipseForADT-20130219/sdk:/Applications/eclipseForADT-20130219/sdk/tools/:$PATH  
devmatoMacBook-2:cordova-android kevin$ ./bin/create ~/MyWorkSpace/JiffAndroidApp me.jiff.AndroidApp JiffAndroidApp
devmatoMacBook-2:cordova-android kevin$ 

posted @ 2013-02-17 13:12 RTY 閱讀(1105) | 評論 (0)編輯 收藏

2013年2月7日

為你的Cocoa應用程序加入更新支持:Sparkle 簡介

發(fā)布于:2010-09-20 13:06閱讀數(shù):3141

作為一名桌面軟件開發(fā)者,應該提早考慮程序的更新問題。如何將程序更新及時優(yōu)雅的推送給用戶,是維持用戶忠誠度和提高軟件使用體驗的一個重要方面。而作為Cocoa應用程序開發(fā)者,

轉(zhuǎn)自 ibuick.com,原文  http://ibuick.com/index.php/archives/add-automatic-update-support-over-cocoa-app-via-sparkle-framework


作為一名桌面軟件開發(fā)者,應該提早考慮程序的更新問題。如何將程序更新及時優(yōu)雅的推送給用戶,是維持用戶忠誠度和提高軟件使用體驗的一個重要方面。而作為Cocoa應用程序開發(fā)者,我們可以選擇自己手動來實現(xiàn)此功能,也可以選擇一些優(yōu)秀的開源框架。Sparkle就是其中之一。

Sparkle是一個非常簡單且易用的Cocoa應用程序更新框架。本篇文章將使用一個簡單的例子,教你如何使用Sparkle為你的Cocoa應用程序加入更新支持。

1: 新建一個Cocoa Application,TestSparkle

wpid-wpid-xcodecocoaapplication-2010-09-10-16-11-2010-09-10-16-11.png

 

wpid-wpid-cocoaapplicationwithsparkle-2010-09-10-16-11-2010-09-10-16-11.png
2: 去到Sparkle下載Sparkle Framework,最新版本為 1.5b6,

wpid-wpid-sparkle-2010-09-10-16-11-2010-09-10-16-11.png
Sparkle Test App.app 是一個用來演示Sparkle更新框架的一個應用程序。

Extras文件夾下提供了Sparkle的標準圖標,Release Notes模版,軟件簽名工具,源代碼和Appcast.xml示例文件,我們后面會再講到這些工具和文件。

With Garbage Collection, 是一個加入了Garbage Collection支持的Sparkle分發(fā)版,如果你的應用程序運行在有GC的環(huán)境下,則可以使用這個版本的Sparkle

Sparkle.framework 是通用分發(fā)版,筆者建議大家使用此版本的Sparkle

3: 鏈接Sparkle框架到TestSparkle工程

拖拽Sparkle.framework(或 with Garbage Collection下的 Sparkle.framework)到TestSparkle的Linked Frameworks下,在彈出窗口中記得選中”Copy items into destination group’s folder (if needed)”前面的復選框。

wpid-wpid-addsparkletotestsparkle-2010-09-10-16-11-2010-09-10-16-11.png

4: 為你的工程新建一個Copy Files Build Phase,

wpid-wpid-addcopyfilesbuildphase-2010-09-10-16-11-2010-09-10-16-11.png
5: 右鍵點擊這個新建的Copy Files Build Phase,并在彈出窗口中,點擊Destination下拉框,選擇Frameworks

wpid-wpid-copyfilesbuildphaseforframework-2010-09-10-16-11-2010-09-10-16-11.png
6: 將Linked Framworks下的Sparkle.framework拖拽到這個新建的Copy Files Build Phase 中

wpid-wpid-addsparkle-2010-09-10-16-11-2010-09-10-16-11.png
7: 在Interface Builder中打開TestSparkle的MainMenu.xib(nib), 然后點擊Interface Builder–>Files–>Read Class Files

wpid-wpid-readclassfiles-2010-09-10-16-11-2010-09-10-16-11.png

8: 將Sparkle.framework中的所有頭文件選中并讀取

wpid-wpid-readheaderfiles-2010-09-10-16-11-2010-09-10-16-11.png
9: 從Library中拖拽一個 NSObject到MainMenu主窗口.

wpid-wpid-addobject-2010-09-10-16-11-2010-09-10-16-11.png

10: 點擊此Object對象,點擊Inspector,設定此Object的Class為 SUUpdater

wpid-wpid-SUUpdater-2010-09-10-16-11-2010-09-10-16-11.png

11: 添加一個菜單項到到TestSparkle Menu,重命名為 Check For Updates…

wpid-wpid-Checkupdatesmenuitem-2010-09-10-16-11-2010-09-10-16-11.png

12: 將 Check for Updates…菜單項的Send Actions指向Updater Object的checkForUpdates方法

wpid-wpid-addactionforupdate-2010-09-10-16-11-2010-09-10-16-11.png
13: 保存Interface Builder的所有更改,退出Interface Builder。

14: 為了安全防止應用程序更新遭到惡意篡改,我推薦對應用程序更新添加數(shù)字簽名。

Sparkle使用DAS SHA-1 來對程序更新包進行數(shù)字簽名。

打開終端,進入步驟2中存放已下載的Sparkle包的文件夾,進入Extras–>Signing Tools,

執(zhí)行,

ruby generate_keys.rb

這個命令將會生成兩個文件 dsa_priv.pem 和 dsa_pub.pem,也就是私鑰和公鑰,請妥善保存這兩個文件,如果私鑰丟失,你得用戶將再也無法自動通過已安裝的程序來獲得更新的更新。

15: 建立一個 App Cast Feed文件

Sparkle的運作機理其實非常簡潔,本地應用程序Info.plist中含有一個URL,此URL指向一個在你網(wǎng)站上的App Cast Feed XML文件。當你發(fā)布更新的時候,上傳新的app到你的網(wǎng)站,更新此app cast xml feed。這樣,客戶端程序在運行檢查更新時,會根據(jù)Info Plist中的URL找到并Parse此文件,跟本地軟件版本進行比對。如果發(fā)現(xiàn)更新,則提示用戶。這就是App Cast XML Feed文件的作用。

在步驟14中提到的Extras文件夾下,有一個App Cast XML Feed文件的模版:

 

http://you.com/app/2.0.html

Wed, 09 Jan 2006 19:20:11 +0000

http://you.com/app/1.5.html

Wed, 01 Jan 2006 12:20:11 +0000
<!-- Now here's an example of a version with a weird internal version number (like an SVN revision) but a human-readable external one. -->
http://you.com/app/1.4.html

Wed, 25 Dec 2005 12:20:11 +0000

我們可以看出,這其實是一個標準的RSS Feed格式的XML文件。我們只要修改相應的項目即可。

下面我們就來一步步的演示如何使用Sparkle為你的程序加入更新支持。

16: 我們首先在本地搭建一個可用于測試軟件更新的網(wǎng)站。打開Mac OS X系統(tǒng)偏好設置(System Preferences), 找到共享(Sharing),開啟Web共享(Web Sharing),并通過點擊圖中所示URL測試Web共享是否成功開啟。http://10.0.1.2/~buick 你的顯示可能與此不同,,,,

wpid-wpid-websharing-2010-09-10-16-11-2010-09-10-16-11.png
17: 打開你的XCode中 TestSparkle 工程,編輯 TestSparkle-Info.plist,加入兩個屬性,SUPublicDSAKeyFile 和 SUFeedURL

wpid-wpid-info.plist-2010-09-10-16-11-2010-09-10-16-11.png

其中,SUFeedURL 將是指向一個 App Cast XML Fee 的 URL,比如我的測試地址是 http://10.0.1.2/~buick/testsparkleappcast.xml ,SUPublicDSAKeyFile 指向公鑰,我們把剛才步驟14中生成的 dsa_pub.pem 加入到工程的Resources中,并在 TestSparkle-Info.plist 中指定此公鑰的名稱,,,,那么現(xiàn)在的TestSparkle-Info.plist應該是這樣

整個配置完成,我們現(xiàn)在來構(gòu)建一個TestSparkle.app的1.0版本,點擊Build and Run

wpid-wpid-TestSparkle-2010-09-10-16-11-2010-09-10-16-11.png
啟動TestSparkle.app, 在TestSparkle菜單下,確認Check for Updates…按鈕處于可用狀態(tài),如果是灰色不可點擊,則返回Interface Builder修改。

wpid-wpid-checkforupdates-2010-09-10-16-11-2010-09-10-16-11.png

將此 TestSparkle.app 1.0 版本拷貝到別處備用。然后返回XCode,將應用程序版本改為1.1,然后構(gòu)建工程。將TestSparkle.app 的1.1版本打包成zip文件,改名為TestSparkle_1.1.zip

將 dsa_priv.pem (私鑰) 和 TestSparkle_1.1.zip 拷貝到 Extras下的Signing Tool文件夾中,

wpid-wpid-signing-2010-09-10-16-11-2010-09-10-16-11.png

打開終端進入到此文件夾,執(zhí)行:

ruby sign_update.rb TestSparkle_1.1.zip dsa_priv.pem

wpid-wpid-sign-2010-09-10-16-11-2010-09-10-16-11.png
便可得到升級包的簽名,MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==

用文本編輯器創(chuàng)建一個xml文件(UTF-8 編碼),內(nèi)容如下:

http://10.0.1.2/~buick          The latest TestSparkle updates from localhost, more hot features and sweeties
en

Fri, 10 Sept 2010 0:00:00 +0300             http://10.0.1.2/~buick

注意(由于本網(wǎng)站HTML的設置問題,如果你直接拷貝以上XML Feed文件到你本地測試可能會出編碼問題導致XML Parse失敗,請到本文最后下載此文件,以及工程壓縮包)。

把此XML另存為 testsparkleappcast.xml

熟悉RSS Feed的讀者可能很容易理解此文件,,如果我們在瀏覽器中直接訪問此URL,我們會看到

wpid-wpid-feed-2010-09-10-16-11-2010-09-10-16-11.png

而我們要關(guān)注的只是這兩段:

這段指定的URL是一個介紹頁面,如果你希望在更新提示窗口中出現(xiàn)一個介紹新版本的頁面(或者說release notes),則使用此URL定向到你網(wǎng)站上的新版本介紹頁面。

Sparkle非常貼心的為大家提供了一個模版,在Extras/Release Notes Templates 文件夾下可找到

enclosure sparkle:version=“1.1” sparkle:dsaSignature=“MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==“ url=“http://10.0.1.2/~buick/TestSparkle_1.1.zip” length=“436264” type=“application/octet-stream”/>

這段是實現(xiàn)Sparkle Update的關(guān)鍵,

sparkle:version=“1.1” 是指當前更新包版本號,客戶端程序就是根據(jù)這個版本號來和本地APP進行比對,如果發(fā)現(xiàn)不同則提示更新。

sparkle:dsaSignature=“MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==“ 這個就是我們剛才為更新包生成的數(shù)字簽名

url=“http://10.0.1.2/~buick/TestSparkle_1.1.zip” 指向更新包下載地址

length=“436264” 指更新包的大小,上傳上去前用 終端 ls -al 命令可查看

type=“application/octet-stream” 是一個想對固定的值,一般不用修改。

現(xiàn)在把testsparkleappcast.xml 和 TestSparkle_1.1.zip 拷貝到

你的用戶主目錄/Sites 下 (~/Sites,具體路徑依你個人配置而定)

wpid-wpid-path-2010-09-10-16-11-2010-09-10-16-11.png
然后在瀏覽器敲入 http://10.0.1.2/~buick/testsparkleappcast.xml

如果能夠看到類似網(wǎng)頁,,,說明一切正常。

下面找到我們剛才保存的TestSparkle.app 1.0版本,運行并點擊 Check for Updates… 如果一切正常,你可以看到

wpid-update1-2010-09-10-16-11.png

點擊Install Update,如果更新成功,即可顯示:

wpid-complee-2010-09-10-16-11.png

然后再次點擊Check for Updates, 你會看到

wpid-latest-2010-09-10-16-11.png

最后希望你與Sparkle合作愉快。

點擊此處下載本次工程源代碼和示例XML Feed文件,另外,安裝包里面還帶有一個Sparkle的簡體中文包,將它放入你的Sparkle.framework/Resources下即可。

posted @ 2013-02-07 14:14 RTY 閱讀(1087) | 評論 (0)編輯 收藏

2013年2月5日

文字色彩

可以用一個UIColor對象來定義文字的色彩。UIColor這個類提供了許多不同的方法,可以很輕松地調(diào)出任何顏色。你可以用靜態(tài)方法來創(chuàng)建 顏色,這樣它們會在停止使用后被釋放。可以用灰度值、色相或者RGB復合值等多種形式來創(chuàng)建顏色。要創(chuàng)建一個簡單的RGB色彩,可以指定一組4個浮點值, 分別對應紅、綠、藍和alpha值(透明度),取值均在0.0~1.0之間。這些值表示了0%(0.0)~100%(1.0)的范圍:

  1. UIColor *myWhiteTransparentColor = [ UIColor 
    colorWithWhite: 1.0 alpha: 0.50 ];  
  2.  
  3. UIColor *myColorHue = [ UIColor colorWithHue: 120.0 / 360.0  
  4.         saturation: 0.75  
  5.         brightness: 0.50  
  6.         alpha: 1.0  
  7. ];  
  8.  
  9. UIColor *myColorRGB = [ UIColor colorWithRed: 0.75  
  10.         green: 1.0  
  11.         blue: 0.75  
  12.         alpha: 1.0  
  13. ]; 

如果你打算重用許多不同的UIColor對象,你也可以創(chuàng)建它們的實例:

  1. UIColor *myWhiteTransparentColor = [ [ UIColor alloc ]  
  2.         initWithWhite: 1.0 alpha: 0.50  
  3. ];  
  4.  
  5. UIColor *myColorHue = [ [ UIColor alloc ]  
  6.         initWithHue: 120.0 / 360.0  
  7.         saturation: 0.75  
  8.         brightness: 0.50  
  9.         alpha: 1.0  
  10. ];  
  11.  
  12. UIColor *myColorRGB = [ [ UIColor alloc ] initWithRed: 0.75  
  13.         green: 1.0  
  14.         blue: 0.75  
  15.         alpha: 1.0  
  16. ]; 

UIColor類還支持許多靜態(tài)方法,可以創(chuàng)建系統(tǒng)顏色,這些顏色都經(jīng)過iPhone的校正,以達到盡可能準確的地步。這些方法如下所示,均來自UIColor.h:

  1. + (UIColor *)blackColor;        // 0.0 白色  
  2. + (UIColor *)darkGrayColor;     // 0.333 白色  
  3. + (UIColor *)lightGrayColor;    // 0.667 白色  
  4. + (UIColor *)whiteColor;        // 1.0 白色  
  5. + (UIColor *)grayColor;         // 0.5 白色  
  6. + (UIColor *)redColor;          // 1.0, 0.0, 0.0 RGB  
  7. + (UIColor *)greenColor;        // 0.0, 1.0, 0.0 RGB  
  8. + (UIColor *)blueColor;         // 0.0, 0.0, 1.0 RGB  
  9. + (UIColor *)cyanColor;         // 0.0, 1.0, 1.0 RGB  
  10. + (UIColor *)yellowColor;       // 1.0, 1.0, 0.0 RGB  
  11. + (UIColor *)magentaColor;      // 1.0, 0.0, 1.0 RGB  
  12. + (UIColor *)orangeColor;       // 1.0, 0.5, 0.0 RGB  
  13. + (UIColor *)purpleColor;       // 0.5, 0.0, 0.5 RGB  
  14. + (UIColor *)brownColor;        // 0.6, 0.4, 0.2 RGB  
  15. + (UIColor *)clearColor;        // 0.0 白色, 0.0 alpha 

創(chuàng)建好UIColor對象之后,就可以將其賦給文本視圖的色彩屬性了:

textView.textColor = myColorHue; 

posted @ 2013-02-05 15:24 RTY 閱讀(680) | 評論 (0)編輯 收藏

2013年2月4日

NSString *str = @"011597464952,01521545545,454545474,454545444|Hello this is were the message is.";

NSArray *firstSplit = [str componentsSeparatedByString:@"|"];
NSAssert(firstSplit.count == 2, @"Oops! Parsed string had more than one |, no message or no numbers.");
NSString *msg = [firstSplit lastObject];
NSArray *numbers = [[firstSplit objectAtIndex:0] componentsSepratedByString:@","];

// print out the numbers (as strings)
for(NSString *currentNumberString in number) {
NSLog(@"Number: %@", currentNumberString);

posted @ 2013-02-04 14:22 RTY 閱讀(5559) | 評論 (0)編輯 收藏

功能創(chuàng)建一個test.plist文件,textInput作為輸入,displayLabel作為顯示,有一個按鈕來觸發(fā)保持程序triggerStorage;

-(void)triggerStorage
{
    displayLabel.text = textInput.text;
    
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths    objectAtIndex:0];  
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];   //獲取路徑
    
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];  //讀取數(shù)據(jù)
    NSLog(@"dic2 is:%@",dic2); 
    
    //創(chuàng)建一個dic,寫到plist文件里
    NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:displayLabel.text,@"IP",nil]; //寫入數(shù)據(jù)
    [dic writeToFile:filename atomically:YES];   

}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    NSMutableArray *resultData; 
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths objectAtIndex:0];
    NSLog(@"path = %@",path);   
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"]; 
  
    //讀文件
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];
    NSLog(@"dic is:%@",dic2);    
    if(dic2 == nil)
    {
        //1. 創(chuàng)建一個plist文件 
        NSFileManager* fm = [NSFileManager defaultManager];
        [fm createFileAtPath:filename contents:nil attributes:nil];        
    }
    else
    {
        resultData=[dic2 objectForKey:@"IP"]; 
        if([dic2 count] > 0)
        {
            displayLabel.text = resultData;
        }
        else
        {
            displayLabel.text = @" ";
        }
    }
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]   //按鈕的初始化及觸發(fā)條件設置
                                               initWithTitle:@"保存" 
                                               style:UIBarButtonItemStylePlain 
                                               target:self 
                                               action:@selector(triggerStorage)] autorelease];    
    [super viewDidLoad];
}

------------------------------------------------------------------------------------------------------------------------------------------------------------

參考代碼:

plist 文件讀寫
    //1. 創(chuàng)建一個plist文件
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths    objectAtIndex:0];
    NSLog(@"path = %@",path);
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];    
    NSFileManager* fm = [NSFileManager defaultManager];
    [fm createFileAtPath:filename contents:nil attributes:nil];        
    //NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    
    //創(chuàng)建一個dic,寫到plist文件里
    NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:@"sina",@"1",@"163",@"2",nil];
    [dic writeToFile:filename atomically:YES];
    
    //讀文件
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];

    NSLog(@"dic is:%@",dic2);

posted @ 2013-02-04 13:49 RTY 閱讀(7747) | 評論 (1)編輯 收藏

2013年1月8日

《移動應用開發(fā)解決方案》Embarcadero HTML 5 Builder
2012年10月28日 ⁄ 最新素材, 行業(yè)軟件暫無評論 ⁄ 被圍觀 324 views+

002364cf_medium.jpg
Embarcadero HTML 5 Builder | 464.2 mb

HTML5 Builder允許開發(fā)者在可視化IDE中使用Javascript、HTML5,jQuery mobile以及CSS3開發(fā)Web和移動應用。關(guān)心跨平臺移動支持的開發(fā)者,可以使用同一份公共HTML5/CSS3/JavaScript代碼,支持iOS,Android,黑莓以及Windows Phone。HTML5 Builder不僅僅關(guān)注客戶端開發(fā),它還集成了服務端PHP以及數(shù)據(jù)庫(如MySQL)的支持。
HTML5 Builder是增強并重命名的RadPHP。通過對客戶端解決方案的更多支持,尤其是對HTML5和CSS3的支持,我們感覺新名字更適合其新能力,并且更符合當前的市場。作為一個完整的端到端Web開發(fā)解決方案,HTML5 Builder繼續(xù)支持PHP后端解決方案(具體講,就是Zend框架以及數(shù)據(jù)訪問組件)。

HTML5 Builder is Embarcadero's Web and Mobile application development solution enabling corporate and ISV developers to visually design and create apps for Web, iOS, Android, BlackBerry and Windows Phone using a single HTML5, CSS3, PHP and JavaScript codebase.

HTML5 Builder is the replacement for RadPHP in the Embarcadero product portfolio for Web and Mobile application platforms. With this groundbreaking new developer solution you can now build web and mobile apps with a single codebase using web standards - and deliver your apps to users via desktop and mobile Web browsers or natively "on device" via Apple, Android, BlackBerry and Windows Phone mobile app stores.

About Embarcadero Technologies
Embarcadero Technologies, Inc. is a leading provider of award-winning tools for application developers and database professionals so they can design systems right, build them faster and run them better, regardless of their platform or programming language. Ninety of the Fortune 100 and an active community of more than three million users worldwide rely on Embarcadero products to increase productivity, reduce costs, simplify change management and compliance, and accelerate innovation. Founded in 1993, Embarcadero is headquartered in San Francisco, with offices located around the world.

VIP服務

posted @ 2013-01-08 16:31 RTY 閱讀(681) | 評論 (0)編輯 收藏

     摘要: Parse .strings file with PythonParse .strings file with Pythonup vote1down votefavoriteI'm trying to write a small Python script to parse the .strings file in my iPhone application project and determi...  閱讀全文

posted @ 2013-01-08 13:44 RTY 閱讀(602) | 評論 (0)編輯 收藏

2013年1月7日

cocoa中雖然有[[NSFileManager defaultManager] fileExistsAtPath:filename]來檢查文件是否可寫的方法,但是對文件目錄卻不起作用,沒辦法只好自己寫一個比較山寨的方法:

bool IsDirectoryWritable(NSString *dir)
{
    bool result = false;
    
    if(![[NSFileManager defaultManager] fileExistsAtPath:dir])
        return result;
    
    NSString* fileName = [dir stringByAppendingFormat:@"/  _#t.txt"];
    NSData *data = [fileName dataUsingEncoding:NSUTF8StringEncoding];
    [data writeToFile:fileName atomically:NO];
    
    result = [[NSFileManager defaultManager] fileExistsAtPath:fileName];
    if(result)
    {
        [[NSFileManager defaultManager] removeItemAtPath:fileName error:NULL];
    }
    
    return true;
}

這個方法的不好之處就是有可能用于嘗試的fileName可能已經(jīng)存在(雖然已經(jīng)起的很奇怪了快哭了),這樣會導致返回結(jié)果不準確,也有可能測試文件創(chuàng)建成功了但是刪除卻失敗了,那么也會導致下次測試不準確,。如果哪位高人有更好的辦法,麻煩指教。

posted @ 2013-01-07 23:24 RTY 閱讀(698) | 評論 (0)編輯 收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久亚洲欧洲| 99日韩精品| 欧美国产视频日韩| 激情亚洲成人| 欧美a级片网| 欧美激情中文字幕乱码免费| 一区精品久久| 欧美激情国产日韩| 亚洲日本理论电影| 亚洲精品国产精品国产自| 蜜臀a∨国产成人精品| 欧美影院午夜播放| 国产日韩高清一区二区三区在线| 美女免费视频一区| 国内精品一区二区| 久久久噜噜噜久久| 欧美噜噜久久久xxx| 亚洲精品一品区二品区三品区| 亚洲欧洲在线看| 国产亚洲精品久久久久动| 欧美资源在线| 一区二区三区导航| 玖玖国产精品视频| 亚洲免费伊人电影在线观看av| 国内精品一区二区三区| 欧美日一区二区在线观看 | 欧美午夜www高清视频| 亚洲少妇自拍| 免费欧美日韩| 午夜一区二区三区在线观看 | 91久久精品美女高潮| 欧美一级在线播放| 亚洲国产第一页| 国产精品一区免费视频| 欧美日韩国产综合视频在线观看中文 | 欧美日本在线看| 在线视频欧美日韩精品| 美女网站在线免费欧美精品| 亚洲毛片视频| 亚洲国产精品成人va在线观看| 欧美视频在线一区| 欧美视频国产精品| 夜夜嗨av一区二区三区网站四季av| 午夜精品久久久久久| 一区在线播放视频| 精品动漫3d一区二区三区免费版 | 欧美成人蜜桃| 国产精品久久影院| 一本久道久久久| 久久精品国产成人| 久久一区二区三区国产精品 | 亚洲永久免费av| 久久综合给合久久狠狠狠97色69| 一区二区亚洲精品国产| 欧美午夜电影网| 久久综合国产精品| 91久久精品一区| 一本色道**综合亚洲精品蜜桃冫 | 午夜精品美女自拍福到在线| 亚洲欧美精品suv| 久久久久久九九九九| 国产伦精品一区二区三区免费| 在线看片日韩| 亚洲国产一区二区在线| 久久久欧美精品| 99精品国产热久久91蜜凸| 欧美a级片一区| 亚洲欧美资源在线| 欧美大香线蕉线伊人久久国产精品| 在线日本高清免费不卡| 久久久久久久久久久久久9999| 久久婷婷麻豆| 亚洲一区欧美二区| 久久一区二区三区av| 99pao成人国产永久免费视频| 先锋影音国产精品| 99亚洲伊人久久精品影院红桃| 亚洲一区二区免费| 亚洲免费电影在线观看| 亚洲色诱最新| 激情成人在线视频| 亚洲性夜色噜噜噜7777| 国产综合亚洲精品一区二| 欧美大片免费| 午夜精品成人在线| 亚洲视频网站在线观看| 国产精品久久久久久亚洲毛片| 亚洲欧美日本国产有色| 久久综合综合久久综合| 亚洲精品一区二区三区婷婷月 | 亚洲综合日韩| 亚洲国产欧美一区二区三区久久| 欧美电影电视剧在线观看| 国产亚洲欧美色| 日韩亚洲成人av在线| 亚洲人成在线播放网站岛国| 国产精品网曝门| 亚洲砖区区免费| 久久福利精品| 国产欧美日韩在线播放| 亚洲色无码播放| 午夜日本精品| 国产精品自拍视频| 午夜精品区一区二区三| 午夜精品福利视频| 欧美色中文字幕| 中文日韩在线| 夜夜嗨av一区二区三区网页| 亚洲男人av电影| 亚洲精品视频二区| 国产精品久久久91| 久久久久五月天| 亚洲人久久久| 欧美视频官网| 久久爱另类一区二区小说| 亚洲——在线| 国产揄拍国内精品对白| 欧美freesex交免费视频| 亚洲精品久久视频| 亚洲国产婷婷香蕉久久久久久99| 久久亚洲精品一区二区| 免费的成人av| 亚洲精品1234| 欧美日韩国产a| 欧美国产精品v| 亚洲欧美成人网| 亚洲激情综合| 国产精品亚洲精品| 欧美mv日韩mv国产网站app| 亚洲最黄网站| 激情成人综合网| 欧美激情在线有限公司| 国产精品99久久久久久久久| 久久免费视频在线| 亚洲视频二区| 在线观看国产精品网站| 欧美激情二区三区| 亚洲欧美韩国| 亚洲美女av黄| 久久久久久网| 亚洲大胆在线| 久久久久成人精品免费播放动漫| avtt综合网| 亚洲欧美国产另类| 一区二区三区欧美日韩| 国产精品久久久久高潮| 欧美极品欧美精品欧美视频| 久色成人在线| 女女同性女同一区二区三区91| 亚洲中无吗在线| 夜夜嗨av一区二区三区网页| 欧美激情二区三区| 亚洲成在线观看| 亚洲国产婷婷香蕉久久久久久| 欧美高清不卡| 亚洲国产精品99久久久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久精品午夜| 久久手机精品视频| 亚洲激情av| 亚洲人成人一区二区三区| 这里只有视频精品| 亚洲一区久久久| 久久性色av| 欧美~级网站不卡| 亚洲国产精品va在线看黑人动漫| 美日韩精品免费| 亚洲精品一区在线观看| 亚洲欧美国产日韩中文字幕| 在线亚洲欧美| 久久综合中文色婷婷| 欧美成人精品福利| 国产精品久久久久久亚洲毛片 | 亚洲一区网站| 另类图片国产| 亚洲一区二区三区777| 久久伊人精品天天| 国产欧美亚洲精品| 亚洲视频在线观看免费| 裸体丰满少妇做受久久99精品| 99视频在线精品国自产拍免费观看 | 亚洲国产精品福利| 午夜在线精品| 亚洲免费精品| 欧美+亚洲+精品+三区| 国产亚洲永久域名| 欧美在线播放| 99re6热在线精品视频播放速度| 亚洲午夜在线| 欧美好骚综合网| 在线电影国产精品| 久久久久久网址| 久久国内精品自在自线400部| 国产精品va在线| 午夜天堂精品久久久久| 国产精品99久久久久久久久| 久久精品二区亚洲w码| 亚洲日本va午夜在线影院| 欧美精品1区2区| 亚洲视频一区二区免费在线观看|