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

2015/04/16

Your iphone must use the same icloud and facetime account

更新完OS X之後用Facetime打電話會出現『Your iphone must use the same icloud and facetime account』錯誤訊息

請先將手機與電腦的Facetime登出,並重新登入就可以繼續用電腦撥電話啦 :)

2015/02/13

Swfit IOS add marker on the Google Maps

Code:
//
//  ViewController.swift
//  Sample
//
//  Created by C.Y.Fang on 2/10/15.
//  Copyright (c) 2015 C.Y.Fang. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    let url = "http://data.kaohsiung.gov.tw/Opendata/DownLoad.aspx?Type=2&CaseNo1=AU&CaseNo2=1&FileType=2&Lang=C&FolderType=O"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        var camera = GMSCameraPosition.cameraWithLatitude(22.60583276,
            longitude: 120.307702,  zoom: 10)
        var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
        self.view = mapView
        let json:AnyObject! = getJsonFromURL(url)
        drawMaker(mapView, json: json)
    }

    private func getJsonFromURL(url:String)->AnyObject?{
        let url = NSURL(string: url)
        let data = NSData(contentsOfURL: url!)
        return NSJSONSerialization.JSONObjectWithData(data!,
            options: NSJSONReadingOptions.AllowFragments, error: nil)
    }
    
    private func drawMaker(mapView:GMSMapView, json:AnyObject?){
        if let array = json as? NSArray {
            for temp in array{
                let name = temp["車站中文名稱"] as NSString!
                let lat = (temp["車站緯度"] as NSString!).doubleValue
                let lng = (temp["車站經度"] as NSString!).doubleValue
                
                var market = GMSMarker()
                market.position =  CLLocationCoordinate2DMake(lat ,lng)
                market.title = name
                market.map = mapView
            }
        }
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


}

執行結果:


2015/02/12

Swift IOS Read JSON from url

JSON資料使用高雄市公車路線資料

先將url透過NSURL建構子建立該常數,再將NSURL給予NSData建構子,回傳資料為NSData

let data = getDataFromUrl(url)!

func getDataFromUrl(url:String) -> NSData? {
        let url = NSURL(string: url)
        
        if(url == ""){
            return nil
        }
        
        return NSData(contentsOfURL: url!)
    }



再透過NSJSONSerialization.JSONObjectWithData方法將Data轉成AnyObject

並將其JSON依照高雄市公車路線資料的格式輸出




func printJson(object:AnyObject){
        if let array = object as? NSArray{
            for temp in array{
                var id:AnyObject! = temp["ID"]
                var departure:AnyObject! = temp["departureZh"]
                var destination:AnyObject! = temp["destinationZh"]
                println("車牌號碼\(id) 起點\(departure) 目的\(destination)")
            }
        }
    }


Swift IOS Read project file

Project內有一個檔案『test.txt』,裡面文字檔如下圖
讀取檔案內的文字,可透過NSString建構子將文字讀出

首先先透過下面這個方法取得Bundle內指定的檔案
NSBundle.mainBundle().pathForResource


判斷該String是否為nil,如果是就回傳空字串
if(file == nil){
            return ""
        }

如果不是就傳回檔案中的文字,並以UTF8去編碼
        return NSString(contentsOfFile: file!, encoding: NSUTF8StringEncoding, error: nil)

Swift IOS write a file


Code:
//
//  ViewController.swift
//  Sample
//
//  Created by C.Y.Fang on 2/12/15.
//  Copyright (c) 2015 C.Y.Fang. All rights reserved.
//

import UIKit

class ViewController: UIViewController {


    let fileName = "test.cy"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let directory = NSSearchPathForDirectoriesInDomains(
            .AllLibrariesDirectory, .UserDomainMask , true)[0] as String
        let path = "\(directory)/\(fileName)"
        
        NSData().writeToFile(path, atomically: true)
        
        if(NSFileManager.defaultManager().fileExistsAtPath(path)){
            println("yes")
        }else{
            println("no")
        }
    }
    


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


執行結果:

2015/02/10

Swift 使用Google Maps SDK for IOS撰寫iPhone App

先下載Google Maps SDK for IOS並解壓縮,下載同時建立專案,並到Google Play Developer Console將Google Maps SDK for iOS功能開啟,建立一組IOS Key






Google Maps SDK for IOS解壓縮後會看到GoogleMaps-iOS-1.9.1資料夾,將『GoogleMaps.framework』和Resources資料夾內的『GoogleMaps.bundle』複製到專案的『Frameworks』資料夾(沒有Frameworks資料夾須自行建立)


『GoogleMaps.framework』複製到專案時,須將Copy Items if needed打勾,並選擇Create folder references

而『GoogleMaps.bundle』複製到專案時,不需將Copy Items if needed打勾,並選擇Create folder references




加入Objective-C Header,名稱隨意打,程式碼為
#import <GoogleMaps/GoogleMaps.h>


2015/02/04

Xcode 6.1.1 免簽證將App安裝到IOS 8.1.2實機

昨天看了許多免簽證的方法,每個方法十分的好,有得步驟寫得很簡潔有力
但詳細細節還是與現實有些出入,我就打算自己寫一篇比較歸納出來的心得,哪天找不到資源時,勉強可以用上

開始前,得先注意以下幾點

  • 手機JB過了?還沒就請參考『iPhone 5 IOS 8.1.2 使用太極v1.2.0一鍵JB
  • JB後有沒有Cydia軟體?沒有就去安裝吧
  • 擁有一台白蘋果或黑蘋果的電腦了嗎?還沒就快去想辦法吧
  • Xcode下載好了沒?還沒就快去App Store或Apple Developer下載
  • 一顆興奮的心準備好了沒?還沒就吃顆興奮劑吧 :)


先至手機,開啟Cydia軟體做更新
接著按下編輯/加入來源『cydia.angelxwind.net』


iPhone 5 IOS 8.1.2 使用太極v1.2.0一鍵JB

目前的JB版本到了8.1.3無法被JB了,要JB的朋友需確認手上版本是否為8.1.2?
卻認為8.1.2那麼就恭喜你,不用花時間刷回8.1.2
不是的話恭喜你,要浪費一些時間在刷韌體上了


首先呢,先安裝好iTunes版本需為12.0.1,原因是太極JB v1.2.0需要iTunes12.0.1,超過12.0.1會讓太極JB v1.2.0無法找到驅動
最新版本的朋友請將iTunes移除,並重新安裝12.0.1版本
iTunes版本有問題的朋友請參考『iTunes 安裝失敗


下載好太極JB v1.2.0,將傳輸線插入電腦與iPhone上,並執行太極JB v1.2.0
太極JB v1.2.0會先去檢查環境,不過安裝前請先將『關閉密碼』以及關閉『尋找我的iPhone』功能


『關閉密碼』在設定/密碼鎖定/關閉密碼


『尋找我的iPhone』在設定/iCloud/尋找我的iPhone


iPhone 5 IOS 8.1.3 降回 8.1.2

為了不繳年費又想將App在手機上執行,花了些許時間看了免認證的文章,先決條件手機得JB
但前幾天有發布8.1.3順手按下更新,更新完後才知道,才知道8.1.3版本是沒辦法JB
又得把8.1.3刷回8.1.2,好讓App能在手機上執行,先去找尋適合的IPSW
找到之後一樣開啟iTunes,並點選到iPhone圖示,按下Shift + 回復iPhone



選擇正確的韌體,按下開啟



等待片刻即可更新完成





參考資料:
IPSW

iPhone 5 IOS 8.1.2 太極JB刷回原廠

首先你得先安裝好iTunes,基本都不是問題
接著將尋找iPhone功能關掉,並且找尋適合的IPSW
不過對於要備份資料的人,可以先用iTunesiCloud備份,避免資料遺失

準備好時,就可以開啟iTunes,並按住Shfit + 回復iPhone



選擇恢復版本,並按下開啟