The Oakland Post iOS app, written in pure Swift

Overview

Now available on the App Store! Check it out!

The Oakland Post App

The mobile companion for The Oakland Post's website, written entirely in Swift!

Screenshots

Screenshot 1

Screenshot 2

Screenshot 3

Compiling

Just clone, open TheOaklandPost.xcworkspace, and build & run. A CocoaPods installation is not necessary since the dependencies are vendored in Pods/.

Conventions

Issues

Each issue is assigned exactly three labels of the form (severity, type, component):

severity  = major | minor .
type      = bug | enhancement | feature .
component = global | home | sections | photos | blogs | info | login .

Commit Messages

I follow the recommendations from the Git book, e.g.

Home: heighten rows and add placeholder date label

Comments
  • Fantastic JOB

    Fantastic JOB

    Only a word: FANTASTIC!!! Many compliments for your job. I'm at start with swift coding .... but, it's possibile to have some tips to extract and use your Info page in other apps? If I copy class and View in a app coded with Object C, there are a lot of error. Which are dependencies for Info page?

    Thanks

    opened by wizard699 3
  • Swift language deprecation updates

    Swift language deprecation updates

    Fixed issues that will arise once Swift 3 is released, mainly relating to:

    1. Removal of ++ and -- operators
      • --loadCount becomes loadCount -= 1
    2. Use of string literal for Objective-C Selectors
      • let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "singleTapReceived:") becomes
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(EnlargedPhotoGestureRecognizers.singleTapReceived(_:)))
    opened by peterkos 2
  • Do a general refactor now that I'm better at Swift/iOS

    Do a general refactor now that I'm better at Swift/iOS

    just found your work! im newbie but i am amazed on what i have just seen!!! have read your comment on a previous "issue" and have made changes to the categories myself with your help of course!!

    as for the first tab..how can i fetch news from my own rss website like on the sections? i mean when i go to "BlogsViewController" and enter my rss us and run the app the first tab says "error" and nothing else :(

    enhancement major 
    opened by iGman7 2
  • Fixed starredPosts object identifier subscript error

    Fixed starredPosts object identifier subscript error

    When attempting to compile, an error stating that the subscript used to get a starredPosts object's identifier was ambiguous. This should fix that. (Emphasis on should: I'm new to Cocoa/CocoaTouch, and am not sure how to setup Parse so I can login to test the starred posts feature).

    This way, the app at least compiles. I'm working on a branch to convert the rest of the deprecated Swift code, but those are only warnings.

    opened by peterkos 1
  • Parse service shutdown

    Parse service shutdown

    https://www.parse.com/migration

    Parse will be shutting down on January 28th, 2017. Suggestion: migrate to another database platform?

    I'm new to Cocoa/CocoaTouch development, so I'm not sure as to what database platform would be best.

    opened by peterkos 1
  • Swift Compiler Error

    Swift Compiler Error

    I am using xcode 6.1 on OSX 10.9.5 but when I am running simulator getting following error

    iCarousel.h Swift Compiler Error Expected Identifier or '('

    Can you help to resolve it?

    opened by syedrazanaqvi 1
  • Improve text appearance

    Improve text appearance

    opened by aclissold 1
  • Test on iOS 7

    Test on iOS 7

    Encountered when briefly running on iPhone 4s iOS 7.1.1:

    2014-07-16 22:52:24.090 The Oakland Post[212:60b] Unsupported pixel format in CSI
    2014-07-16 22:52:24.098 The Oakland Post[212:60b] Unable to create unsliced image from csi bitmap data.
    2014-07-16 22:52:24.222 The Oakland Post[212:60b] Could not load the "Circle" image referenced from a nib in the bundle with identifier "com.andrewclissold.The-Oakland-Post"
    
    bug minor global 
    opened by aclissold 1
  • Autolayout constraint conflicts on iPad

    Autolayout constraint conflicts on iPad

    Occurs when rotating from landscape to portrait.

    2014-07-04 16:23:20.749 The Oakland Post[299:36900] Unable to simultaneously satisfy constraints.
        Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
    (
        "<NSAutoresizingMaskLayoutConstraint:0x156944c0 h=--& v=--& UITableViewWrapperView:0x15660b10.midY == + 480>",
        "<NSAutoresizingMaskLayoutConstraint:0x156944f0 h=--& v=--& V:[UITableViewWrapperView:0x15660b10(768)]>",
        "<NSAutoresizingMaskLayoutConstraint:0x156946a0 h=-&- v=-&- UITableView:0x15870e00.midY == UIViewControllerWrapperView:0x15664bf0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x156946d0 h=-&- v=-&- UITableView:0x15870e00.height == UIViewControllerWrapperView:0x15664bf0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15690020 h=-&- v=-&- UIViewControllerWrapperView:0x15664bf0.midY == UINavigationTransitionView:0x15643b60.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15690050 h=-&- v=-&- UIViewControllerWrapperView:0x15664bf0.height == UINavigationTransitionView:0x15643b60.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15694b90 h=-&- v=-&- UINavigationTransitionView:0x15643b60.midY == UILayoutContainerView:0x1563fe60.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15694bc0 h=-&- v=-&- UINavigationTransitionView:0x15643b60.height == UILayoutContainerView:0x1563fe60.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x156950a0 h=-&- v=-&- UILayoutContainerView:0x1563fe60.midY == UIViewControllerWrapperView:0x1564e6e0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x156950d0 h=-&- v=-&- UILayoutContainerView:0x1563fe60.height == UIViewControllerWrapperView:0x1564e6e0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695540 h=-&- v=-&- UIViewControllerWrapperView:0x1564e6e0.midY == UITransitionView:0x1564b1e0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695570 h=-&- v=-&- UIViewControllerWrapperView:0x1564e6e0.height == UITransitionView:0x1564b1e0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695b00 h=-&- v=-&- UITransitionView:0x1564b1e0.midY == UILayoutContainerView:0x1564a420.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695b30 h=-&- v=-&- UITransitionView:0x1564b1e0.height == UILayoutContainerView:0x1564a420.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x156961f0 h=-&- v=-&- UILayoutContainerView:0x1564a420.midY == UIWindow:0x15645d50.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15696220 h=-&- v=-&- UILayoutContainerView:0x1564a420.height == UIWindow:0x15645d50.height>",
        "<_UIWindowAnchoringConstraint:0x15696a90 h=--- v=--- UIWindow:0x15645d50.midY == + 384>",
        "<NSAutoresizingMaskLayoutConstraint:0x15696b20 h=--- v=--- V:[UIWindow:0x15645d50(768)]>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSAutoresizingMaskLayoutConstraint:0x156944c0 h=--& v=--& UITableViewWrapperView:0x15660b10.midY == + 480>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
    2014-07-04 16:23:20.782 The Oakland Post[299:36900] Unable to simultaneously satisfy constraints.
        Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
    (
        "<NSAutoresizingMaskLayoutConstraint:0x156944c0 h=--& v=--& UITableViewWrapperView:0x15660b10.midY == + 480>",
        "<NSAutoresizingMaskLayoutConstraint:0x156944f0 h=--& v=--& V:[UITableViewWrapperView:0x15660b10(960)]>",
        "<NSAutoresizingMaskLayoutConstraint:0x156946a0 h=-&- v=-&- UITableView:0x15870e00.midY == UIViewControllerWrapperView:0x15664bf0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x156946d0 h=-&- v=-&- UITableView:0x15870e00.height == UIViewControllerWrapperView:0x15664bf0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15690020 h=-&- v=-&- UIViewControllerWrapperView:0x15664bf0.midY == UINavigationTransitionView:0x15643b60.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15690050 h=-&- v=-&- UIViewControllerWrapperView:0x15664bf0.height == UINavigationTransitionView:0x15643b60.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15694b90 h=-&- v=-&- UINavigationTransitionView:0x15643b60.midY == UILayoutContainerView:0x1563fe60.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15694bc0 h=-&- v=-&- UINavigationTransitionView:0x15643b60.height == UILayoutContainerView:0x1563fe60.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x156950a0 h=-&- v=-&- UILayoutContainerView:0x1563fe60.midY == UIViewControllerWrapperView:0x1564e6e0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x156950d0 h=-&- v=-&- UILayoutContainerView:0x1563fe60.height == UIViewControllerWrapperView:0x1564e6e0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695540 h=-&- v=-&- UIViewControllerWrapperView:0x1564e6e0.midY == UITransitionView:0x1564b1e0.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695570 h=-&- v=-&- UIViewControllerWrapperView:0x1564e6e0.height == UITransitionView:0x1564b1e0.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695b00 h=-&- v=-&- UITransitionView:0x1564b1e0.midY == UILayoutContainerView:0x1564a420.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15695b30 h=-&- v=-&- UITransitionView:0x1564b1e0.height == UILayoutContainerView:0x1564a420.height>",
        "<NSAutoresizingMaskLayoutConstraint:0x156961f0 h=-&- v=-&- UILayoutContainerView:0x1564a420.midY == UIWindow:0x15645d50.midY>",
        "<NSAutoresizingMaskLayoutConstraint:0x15696220 h=-&- v=-&- UILayoutContainerView:0x1564a420.height == UIWindow:0x15645d50.height>",
        "<_UIWindowAnchoringConstraint:0x15696a90 h=--- v=--- UIWindow:0x15645d50.midY == + 384>",
        "<NSAutoresizingMaskLayoutConstraint:0x15696b20 h=--- v=--- V:[UIWindow:0x15645d50(1024)]>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSAutoresizingMaskLayoutConstraint:0x156944c0 h=--& v=--& UITableViewWrapperView:0x15660b10.midY == + 480>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
    
    bug minor home 
    opened by aclissold 1
Owner
Andrew Clissold
I help create the future.
Andrew Clissold
A frida tool that capture GET/POST HTTP requests of iOS Swift library 'Alamofire' and disable SSL Pinning.

FridaHookSwiftAlamofire A frida tool that capture GET/POST HTTP requests of iOS Swift library 'Alamofire' and disable SSL Pinning. 中文文档及过程 Features Ca

neilwu 69 Dec 16, 2022
MonkeyKing helps you to post messages to Chinese Social Networks.

MonkeyKing MonkeyKing helps you post SNS messages to Chinese Social Networks, without their buggy SDKs. MonkeyKing uses the same analysis process of o

null 2.7k Dec 29, 2022
Easy and lightweight network layer for creating different set of network requests like GET, POST, PUT, DELETE customizable with coders conforming to TopLevelDecoder, TopLevelEncoder

Easy and lightweight network layer for creating different set of network requests like GET, POST, PUT, DELETE customizable with coders conforming to TopLevelDecoder, TopLevelEncoder

Igor 2 Sep 16, 2022
A simple GCD based HTTP client and server, written in 'pure' Swift

SwiftyHTTP Note: I'm probably not going to update this any further - If you need a Swift networking toolset for the server side, consider: Macro.swift

Always Right Institute 116 Aug 6, 2022
DispatchSource based socket framework written in pure Swift

SwiftDSSocket Overview SwiftDSSocket is a purely swift based asynchronous socket framework built atop DispatchSource. Function signatures are pretty m

Yi Huang 65 Nov 15, 2022
SwiftSoup: Pure Swift HTML Parser, with best of DOM, CSS, and jquery (Supports Linux, iOS, Mac, tvOS, watchOS)

SwiftSoup is a pure Swift library, cross-platform (macOS, iOS, tvOS, watchOS and Linux!), for working with real-world HTML. It provides a very conveni

Nabil Chatbi 3.7k Dec 28, 2022
Super lightweight async HTTP server library in pure Swift runs in iOS / MacOS / Linux

Embassy Super lightweight async HTTP server in pure Swift. Please read: Embedded web server for iOS UI testing. See also: Our lightweight web framewor

Envoy 540 Dec 15, 2022
NWReachability - a pure Swift library for monitoring the network connection of iOS devices using Apple's Network framework.

NWReachability is a pure Swift library for monitoring the network connection of iOS devices using Apple's Network framework.

null 4 Dec 2, 2022
Swift backend / server framework (Pure Swift, Supports Linux)

NetworkObjects NetworkObjects is a #PureSwift backend. This framework compiles for OS X, iOS and Linux and serves as the foundation for building power

Alsey Coleman Miller 258 Oct 6, 2022
A resource based, protocol oriented networking library designed for pure-SwiftUI applications.

Monarch ?? - WIP A resource based, protocol oriented networking library designed for pure-SwiftUI applications. Features: Async/Await Resource Based P

Emilio Pelaez Romero 4 Oct 17, 2022
Easy to use OAuth 2 library for iOS, written in Swift.

Heimdallr Heimdallr is an OAuth 2.0 client specifically designed for easy usage. It currently supports the resource owner password credentials grant f

trivago N.V. 628 Oct 17, 2022
OAuth2 framework for macOS and iOS, written in Swift.

OAuth2 OAuth2 frameworks for macOS, iOS and tvOS written in Swift 5.0. ⤵️ Installation ?? Usage ?? Sample macOS app (with data loader examples) ?? Tec

Pascal Pfiffner 1.1k Jan 8, 2023
MQTT for iOS and macOS written with Swift

CocoaMQTT MQTT v3.1.1 client library for iOS/macOS/tvOS written with Swift 5 Build Build with Xcode 11.1 / Swift 5.1 Installation CocoaPods Install us

EMQ X MQTT Broker 1.4k Jan 1, 2023
iOS Network monitor/interceptor framework written in Swift

NetShears NetShears is a Network interceptor framework written in Swift. NetShears adds a Request interceptor mechanisms to be able to modify the HTTP

Divar 119 Dec 21, 2022
📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.

Apollo iOS is a strongly-typed, caching GraphQL client, written in Swift. It allows you to execute queries and mutations against a GraphQL server, and

Apollo GraphQL 3.6k Jan 7, 2023
Login-screen-UI - A simple iOS login screen written in Swift 5

This project has been updated to Swift 5 and Xcode 11.2 About This is a simple i

Kushal Shingote 2 Feb 4, 2022
Swift Express is a simple, yet unopinionated web application server written in Swift

Documentation <h5 align="right"><a href="http://demo.swiftexpress.io/">Live ?? server running Demo <img src="https://cdn0.iconfinder.com/data/icons/

Crossroad Labs 850 Dec 2, 2022
FakeGithub is an iOS application written using Objective-C

FakeGithub FakeGithub is an iOS application written using Objective-C. Opensource this project for learning purpose. Hope this could be a little usefu

FakeCoder 5 Oct 12, 2022
Network abstraction layer written in Swift.

Moya 14.0.0 A Chinese version of this document can be found here. You're a smart developer. You probably use Alamofire to abstract away access to URLS

Moya 14.4k Jan 1, 2023